符号'@'在JavaScriptCore中的含义是什么?

问题描述 投票:0回答:1

我正在阅读JavaScriptCore的源代码,过了一会儿我偶然发现了这个问题。代码排序是有道理的,但是当使用“@”时会发生什么?

[...]
if (@isArray(currentElement)) {
        constructor = currentElement.constructor;
        [...]
        if (@isArrayConstructor(constructor) && @Array !== constructor)
            constructor = @undefined;
        else if (@isObject(constructor)) {
            constructor = constructor.@speciesSymbol;
            if (constructor === null)
                constructor = @Array;
        }
    }
[...]

我检查了thisthis,但他们没有多大帮助('@'不是Javascript中的保留字符)

javascript webkit javascriptcore
1个回答
1
投票

我自己找到了答案。正如@ p-s-w-g指出的那样,那些是装饰者。我正在寻找的定义可以在以下位置找到:webkit / Source / JavaScriptCore / runtime / ArrayConstructor.h

inline bool isArray(ExecState* exec, JSValue argumentValue)
{
    if (!argumentValue.isObject())
        return false;

    JSObject* argument = jsCast<JSObject*>(argumentValue);
    if (argument->type() == ArrayType || argument->type() == DerivedArrayType)
        return true;

    if (argument->type() != ProxyObjectType)
        return false;
    return isArraySlow(exec, jsCast<ProxyObject*>(argument));
}
© www.soinside.com 2019 - 2024. All rights reserved.