JavaScript “this” palavra-chave e avisos do Closure Compiler
Eu tenho código de produção que agora estou tentando minimizar com o Compilador de Fechamento usando a opção avançada. O código usaBibliotecas de cookies do lado do cliente de Paul. O compilador gera mais de 30 desses avisos:
JSC_USED_GLOBAL_THIS: dangerous use of the global this object
Aqui estão alguns trechos de código da biblioteca de Paul (código oroginal usa funções nomeadas, não funções anônimas):
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
ouc funções são tipicamente construídas desta forma:
var ucRead = function () {
var search = this.name + "="
var CookieString = document.cookie
this.rawValue = null
this.found = false
}
eu liComo a palavra-chave “this” funciona dentro de um literal de objeto JavaScript? assim comoCompilador de Fechamento Aviso de uso perigoso do objeto "this" global? eEscopo em JavaScript. No entanto, ainda não entendi qual é o escopothis
está no código acima nem como eu iria reescrever este código para eliminar os avisos do compilador.
Q1: alguém pode esclarecer para mim o que o escopo dethis
é?
Q2: Alguém pode fornecer alguns trechos de código mostrando como o acima pode ser reescrito para eliminar os avisos do compilador (eu assumo o uso dethis
tem que ser eliminado)?
TIA.