Ostrzeżenia „to” JavaScript i kompilator zamknięcia
Mam kod produkcyjny, który próbuję teraz zminimalizować za pomocą kompilatora zamknięcia, korzystając z opcji zaawansowanej. Kod używaBiblioteki cookie po stronie klienta Paula. Kompilator generuje ponad 30 z tych ostrzeżeń:
JSC_USED_GLOBAL_THIS: dangerous use of the global this object
Oto kilka fragmentów kodu z biblioteki Paula (kod oroginal używa funkcji nazwanych, a nie funkcji anonimowych):
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
Theuc funkcje są zazwyczaj konstruowane w ten sposób:
var ucRead = function () {
var search = this.name + "="
var CookieString = document.cookie
this.rawValue = null
this.found = false
}
przeczytałemJak działa słowo kluczowe „this” w dosłownym obiekcie JavaScript? jak równieżZamknięcie kompilatora Ostrzeżenie o niebezpiecznym użyciu globalnego „tego” obiektu? iZakres w JavaScript. Jednak nadal nie rozumiem, w jakim zakresiethis
jest w powyższym kodzie ani w jaki sposób chciałbym przepisać ten kod, aby wyeliminować ostrzeżenia kompilatora.
P1: Czy ktoś może wyjaśnić mi, w jakim zakresiethis
jest?
P2: Czy ktoś może dostarczyć fragmenty kodu pokazujące, jak można przepisać powyższe, aby wyeliminować ostrzeżenia kompilatora (zakładam użyciethis
musi zostać wyeliminowany)?
TIA.