Palabra clave de JavaScript "this" y advertencias de Closure Compiler
Tengo un código de producción que ahora estoy tratando de minimizar con el compilador de cierre utilizando la opción avanzada. El código utilizaBibliotecas de cookies del lado del cliente de Paul. El compilador genera más de 30 de estas advertencias:
JSC_USED_GLOBAL_THIS: dangerous use of the global this object
Aquí hay algunos fragmentos de código de la biblioteca de Paul (el código original usa funciones con nombre, no funciones 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
losuc Las funciones se construyen típicamente de esta manera:
var ucRead = function () {
var search = this.name + "="
var CookieString = document.cookie
this.rawValue = null
this.found = false
}
he leído¿Cómo funciona la palabra clave “this” dentro de un objeto literal de JavaScript? tanto comoCompilador de cierre Advertencia: ¿uso peligroso del objeto global "this"? yAlcance en JavaScript. Sin embargo, todavía no entiendo cuál es el alcance dethis
no está en el código anterior ni en cómo volvería a escribir este código para eliminar las advertencias del compilador.
P1: ¿Puede alguien aclararme cuál es el alcance dethis
¿es?
P2: ¿Puede alguien proporcionar algunos fragmentos de código que muestren cómo se puede volver a escribir lo anterior para eliminar las advertencias del compilador (asumo el uso dethis
tiene que ser eliminado)?
TIA.