Cha*_*hon 12 javascript object variable-assignment
我来自C背景的javascript.在javascript中,当我使用赋值运算符将一个对象分配给另一个对象时,它是将值从一个复制到另一个,还是现在它们都指向相同的数据?或者,赋值运算符在这种情况下做了什么?
function point_type()
{
this.x = 0;
this.y = 0;
}
var pnt1 = new point_type();
var pnt2 = new point_type();
pnt1.x = 4;
pnt1.y = 5;
pnt2 = pnt1;
pnt1.x = 8;
pnt2.y = 9;
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,pnt2.x现在是否等于8,还是等于4,还是等于0?
是的,我意识到我可以自己测试一下,我会在等待社区提出答案时这样做.但是,我希望我的问题的答案只会回过头来回答这个例子,并且可能会对javascript对象的工作方式和一些最佳实践有所启发.
跟进问题:
答案似乎是复制了引用.pnt2和pnt1现在指向相同的数据.是否可以设置我的对象以便复制值?这通常是如何在javascript中完成的?显然,我不希望每次需要复制此对象时单独设置每个属性.
Mat*_*att 15
每当我需要在JS中将一个对象复制到另一个对象时,我只需将其转换为原语:
var newObject = JSON.stringify(oldObject);
Run Code Online (Sandbox Code Playgroud)
然后当我需要使用它时:
var evenNewerObj = JSON.parse(newObject);
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
Ann*_*nie 14
在JavaScript中,基元类型按值复制,引用类型通过引用复制.更多信息:http://docstore.mik.ua/orelly/web/jscript/ch09_03.html