Я использую следующую функцию для изменения поведения конкретного экземпляра массива 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/ , я думаю, что мой подход лучше всего подходит для моего варианта использования. Проблема в том, что я просто не знаю, как аннотировать это компилятору.
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