Что означает символ «@» в JavaScriptCore? - PullRequest
0 голосов
/ 27 марта 2019

Я читал исходный код 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;
        }
    }
[...]

Я проверил это и это , но они не помоглимного ('@' не является зарезервированным символом в Javascript)

1 Ответ

1 голос
/ 27 марта 2019

Я нашел ответ сам.Как отметил @pswg, это декораторы.Определения для тех, кого я искал, можно найти в: 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));
}
...