Ключевое слово JavaScript «this» и предупреждения Closure Compiler
У меня есть производственный код, который я сейчас пытаюсь минимизировать с помощью Closure Compiler с использованием расширенной опции. Код используетКлиентские библиотеки cookie со стороны Пола, Компилятор генерирует более 30 из этих предупреждений:
JSC_USED_GLOBAL_THIS: dangerous use of the global this object
Вот некоторые фрагменты кода из библиотеки Пола (оригинальный код использует именованные функции, а не анонимные функции):
var cookieObject = function (name, expires, accessPath) {
var i, j
this.name = name
this.fieldSeparator = "#"
// this.found = false
this['found'] = false; // don't allow Closure-Compiler to rename
this.expires = expires
this.accessPath = accessPath
this.rawValue = ""
this.fields = new Array()
this.fieldnames = new Array()
if (arguments.length > 3) { // field name(s) specified
j = 0
for (i = 3; i < arguments.length; i++) {
this.fieldnames[j] = arguments[i]
j++
}
this.fields.length = this.fieldnames.length
}
this.read = ucRead // function assignments
this.write = ucWrite
this.remove = ucDelete
this.get = ucFieldGet
this.put = ucFieldPut
this.namepos = ucNamePos
this.read()
}; // cookieObject
УНЦ Функции обычно создаются следующим образом:
var ucRead = function () {
var search = this.name + "="
var CookieString = document.cookie
this.rawValue = null
this.found = false
}
я прочиталКак работает ключевое слово «this» в литерале объекта JavaScript? также как иЗакрытие Компилятор Предупреждение об опасном использовании глобального объекта «это»? а такжеОбласть применения в JavaScript, Тем не менее, я до сих пор не понимаю, какова сфераthis
в приведенном выше коде, ни как я бы переписал этот код, чтобы исключить предупреждения компилятора.
Q1: Может кто-нибудь уточнить для меня, какова сфераthis
является?
Q2: Может ли кто-нибудь предоставить некоторые фрагменты кода, показывающие, как вышеперечисленное можно переписать, чтобы исключить предупреждения компилятора (я предполагаю использованиеthis
должен быть устранен)?
ТИА.