在某些情况下,我会看到别名来减少查找链,但在这种情况下,它是一个简单的单行别名,没有减少。
var root = this;
我认为this
更具描述性,因为如果JavaScript在服务器端运行,它将指向浏览器中的window
或许多不同的全局变量。
如果必须别名,我觉得
var global = this;
会更具描述性。
为什么使用root
这个词?我听说root用在“root用户”的上下文中,但是在JavaScript开发的上下文中,我没有得到它。
答案 0 :(得分:3)
this
的含义可以在闭包中改变。
function doSomething() {
function helper() {
alert(this); // I'm helping!
}
alert(this);
helper();
}
someElement.onclick = doSomething;
虽然您可能期望两个警报显示相同,但第二个警报实际上会引用全局对象(或者我认为在严格模式下为null
)。
执行var root = this;
意味着您可以可靠地调用某些内容,而这些内容不会意外地发生变化。
名称root
......好吧,它只是一个名字。
答案 1 :(得分:1)
在某些情况下,我看到别名会减少查找链,但在这种情况下,它是一个简单的单行别名,没有减少。
它在缩小方面有一点优势。 root
可以缩小为一个字母,this
的多次使用不能。另请参阅Is me = this in JavaScript a good practice to support minification?。
此外,root
:函数
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
变量已关闭
root
如果没有_.noConflict = function() {
this._ = previousUnderscore;
return _;
}.bind(this);
,则需要将其重写为
var global = this;
如果必须使用别名,我觉得
global
会更具描述性。为什么使用root这个词?
是的,global
也会很好 - 只是因为root
这个对象的Node中使用的标识符,它可能会增加混乱。 {{1}}代表"根范围"或"根对象"这里。
答案 2 :(得分:0)
它在noConflict函数中使用root
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
此处this
指下划线,指向全局范围。
对于root而不是global,这是一个意见问题