Javascript 数组推送改变所有元素
Javascript 数组推送改变所有元素,javascript,Javascript,var MyObject=函数(x,y){ self.x=x; self.y=y; 回归自我; } var myObjects=[]; var f1=新的MyObject(150200); var f2=新的MyObject(250250); var f3=新的MyObject(300500); 肌对象推(f1); 肌对象推(f2); 肌对象推(f3); 对于(var i=0;i
var MyObject=函数(x,y){
self.x=x;
self.y=y;
回归自我;
}
var myObjects=[];
var f1=新的MyObject(150200);
var f2=新的MyObject(250250);
var f3=新的MyObject(300500);
肌对象推(f1);
肌对象推(f2);
肌对象推(f3);
对于(var i=0;i }
基本上,与推送无关。当您执行self.x=x
时,它正在更新全局对象(如全局范围中的对象),该对象是窗口,您将返回窗口。您的数组包含[窗口,窗口,窗口]
,每次您在窗口中重写x
和y
。使用this
创建原型的对象,如果使用new
,则无需返回 基本上与推压无关。当您执行self.x=x
时,它正在更新全局对象(如全局范围中的对象),该对象是窗口,您将返回窗口。您的数组包含[窗口,窗口,窗口]
,每次您在窗口中重写x
和y
。使用this
创建原型的对象,如果使用new
,则无需返回 :
Window.self只读属性将窗口本身作为WindowProxy返回。它可以与窗口对象(即window.self)或独立对象(self)上的点表示法一起使用
:
在大多数情况下,this
的值取决于函数的调用方式。它不能在执行期间通过赋值进行设置,每次调用函数时可能会有所不同
通过使用或不使用new
关键字,您可以注意到示例中此
的区别:
函数foo(){
console.log({
isThisEqualToWindow:self==这个,
self:self.toString(),
this:this.toString()
});
}
新foo();
foo()代码>:
Window.self只读属性将窗口本身作为WindowProxy返回。它可以与窗口对象(即window.self)或独立对象(self)上的点表示法一起使用
:
在大多数情况下,this
的值取决于函数的调用方式。它不能在执行期间通过赋值进行设置,每次调用函数时可能会有所不同
通过使用或不使用new
关键字,您可以注意到示例中此
的区别:
函数foo(){
console.log({
isThisEqualToWindow:self==这个,
self:self.toString(),
this:this.toString()
});
}
新foo();
foo()代码>您也可以执行var self=this 您也可以执行var self=this 什么是自我
?你是说这个
?self
很可能是窗口
;您肯定希望此self引用窗口对象,这导致f1、f2、f3指向同一对象,因此它显示300作为窗口对象上x属性的值有些人引用var self=this;什么是self
?你是说这个
?self
很可能是窗口
;您肯定希望此self引用窗口对象,这导致f1、f2、f3指向同一对象,因此它显示300作为窗口对象上x属性的值有些人引用var self=this;我想,我们可以覆盖window.self
我想,我们可以覆盖window.self