我正在使用自调用匿名函数来同时创建对象和实例。最后创建的对象将覆盖第一个对象的属性。这是为什么?
<script>
LF = '<br/>'; //line feed
// object a with property name
!function () {
window.a = this; // make global object
this.name = 'a';
document.write('inside: a.name=' + this.name + LF);
}();
// object b with property name
!function () {
window.b = this; // make global object
this.name = 'b';
document.write('inside: b.name=' + this.name + LF);
}();
document.write('outisde: ' + ' a.name=' + a.name + ' b.name=' + b.name + LF);
</script>
结果:
inside: a.name=a
inside: b.name=b
outisde: a.name=b b.name=b
答案 0 :(得分:8)
因为在您的情况下window === this
和window === a
以及window === b
。
在此处阅读更多内容:http://unschooled.org/2012/03/understanding-javascript-this/
答案 1 :(得分:3)
在您的两个功能中,this
为window
。因此this.name
引用相同的变量inisde 两个函数。