【发布时间】:2012-06-15 11:51:38
【问题描述】:
如果我使用严格模式,以下代码将不起作用。它在 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);
【问题讨论】:
标签: javascript mode strict