我最近开始使用"use strict"
作为我的脚本。我注意到的一个行为是。[name of variable]
对一个对象不起作用。例如:
(function(){
"use strict";
window.person = {}
person.name = {
first: "first name",
last: this.first
}
}());
似乎严格的js不允许它了。为什么要删除?有什么缺点吗?
答案 0 :(得分:8)
在没有任何隐式或显式上下文设置的情况下调用的函数中,this
变为undefined
。
如果您立即调用的函数的外部上下文是全局范围,并且这是您对其自身上下文的预期,则可以使用.call(this)
将其上下文设置为外部上下文的上下文。
(function(){
"use strict";
window.person = {}
person.name = {
first: "first name",
last: this.first
}
}).call(this);
无论严格/非严格模式如何,this
都不会引用使用文字符号创建的对象。这就是JavaScript的工作方式。