我有生产代码,我现在想用用关闭编译器的高级选项来缩小。 该代码使用保罗的客户端cookie库 。 编译器生成了这些警告的30:
JSC_USED_GLOBAL_THIS: dangerous use of the global this object
以下是保罗的图书馆借了一些代码段(oroginal代码使用命名函数,而不是匿名函数):
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
在UC功能典型地被构造是这样的:
var ucRead = function () {
var search = this.name + "="
var CookieString = document.cookie
this.rawValue = null
this.found = false
}
我已阅读如何“这”一个JavaScript中的关键字工作对象的文字? 以及关闭编译器警告危险的利用全球的“这个”对象? 和范围在JavaScript中 。 但是,我还是不明白的范围this
是在上面的代码,也没有我怎么会去重写这段代码,以消除编译器警告。
Q1:有人可以澄清我的范围是什么this
是什么?
Q2:有人可以提供一些代码片段展示了如何上面可以重写,以消除编译器警告(我假设使用this
有被淘汰)?
TIA。