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