Как мне аннотировать мое использование этого компилятору закрытия в следующей функции Javascript?

Я использую следующую функцию для изменения поведения конкретного экземпляра массива Javascript. Как я могу аннотировать код для Closure Compiler? http://code.google.com/closure/compiler/docs/js-for-compiler.html Выполнение кода через компилятор приводит к ошибке "JSC_USED_GLOBAL_THIS".

function listify(array) {
    array.toString = function() {
        return '[' + this.join(', ') + ']';
    };
    return array;
};

Не похоже, что я могу использовать аннотацию @extends или @constructor.

Я не хочу изменять глобальный прототип массива, потому что это может привести к непреднамеренным побочным эффектам при использовании на странице другого кода. Кроме того, после прочтения http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/ , я думаю, что мой подход лучше всего подходит для моего варианта использования. Проблема в том, что я просто не знаю, как аннотировать это компилятору.


person user319862    schedule 21.11.2011    source источник
comment
Прямо в документе, на который вы ссылаетесь, сказано, что: To prevent compiler warnings, you must use a @this annotation whenever this appears in a function that is neither a prototype method nor a function marked as a @constructor.   -  person Esailija    schedule 21.11.2011
comment
@Esailija: Хорошо. Я не был уверен, как правильно аннотировать это. Я бы использовал {AT}этот {массив}?   -  person user319862    schedule 21.11.2011
comment
@Esailija: Если вы ответите ответом, который исправляет код, чтобы включить определение типа, я отмечу его как ответ.   -  person user319862    schedule 22.11.2011


Ответы (1)


person    schedule
comment
Спасибо. Я просто не был уверен, есть ли более конкретный JSDoc для использования. - person user319862; 22.11.2011