如果我使用严格模式,则以下代码不起作用。它在 this.bar = 'foobar'; 上失败了 线。为什么会这样?如何在严格模式下创建对象属性?
<html>
<body>
<script>
"use strict";
var foo = (function () {
this.bar = 'foobar';
return this;
}());
alert(foo.bar);
</script>
</body>
</html>
编辑: 感谢 James Allardice 指出问题。我错误地认为自执行函数正在创建一个对象,但事实并非如此。我需要执行以下操作之一:
"use strict";
var foo = new function () {
this.bar = 'foobar';
};
alert(foo.bar);
或者(这个 JSLint 更喜欢)
"use strict";
var foo = (function () {
var obj = {};
obj.bar = 'foobar';
return obj;
}());
alert(foo.bar);