0
我用Node.JS寫了一個項目和一些奇怪的事情。不知怎的,如果我叫test1.changeObjName()它改變了該類的所有實例的值:設置對象的JavaScript類,然後改變它以某種方式改變了所有實例的對象
var myObj = {"name":"test"};
var myClass = function(){
this.obj = myObj;
this.changeObjName = function(){
this.obj.name ="newValue";
};
};
var test1 = new myClass();
var test2 = new myClass();
test1.changeObjName();
console.log(test1.obj.name); //returns "newValue"
console.log(test2.obj.name); //returns "newValue"
爲什麼test1.changeObjName();
變化test2.obj.name
太值?現在,如果我將this.obj的定義更改爲:
var myClass = function(){
this.obj = {"name":"test"};
this.changeObjName = function(){
this.obj.name ="newValue";
};
};
var test1 = new myClass();
var test2 = new myClass();
test1.changeObjName();
console.log(test1.obj.name); //returns "newValue"
console.log(test2.obj.name); //returns "test"
它按照我的預期工作。這裏有什麼區別?