tn
和t
都指向相同的對象,這就是爲什麼當你改變tn.rows
它也改變t.rows
。有沒有這樣的事情old intrinsic value
。
您必須複製對象才能保留舊值。有兩個:shallow copy and deep copy。
使用Object.create
複製鍵值對非常容易。現在
var newObj = Object.create(oldObj);
如果更改newObj
值,也不會改變原有的一個:
var a = {a:1}, b = Object.create(a);
b.a = 2;
console.log(a.a, b.a); //1,2
但是,執行完整的副本真的很複雜。查看更多:How do I correctly clone a JavaScript object?
PS:您提到的new
關鍵字用於創建對象,如class
es。
function Car(n, y){ //This is called a "constructor"
var name = n, year = y; //Private variables
return {
getName: function(){ return name; }, //Getters
getYear: function(){ return year; }
};
}
var myNewCar = new Car("Toyota", 2010);
myNewCar.getName(); //"Toyota"
myNewCar.getYear(); //2010
(這也是您如何在Java中創建對象,如果你已經採取了那些CS課程,你會認識到這種模式。)
'var tn = t;'不克隆對象本身,它只是複製對該對象的引用。 「[克隆對象的最有效方法是?](http://stackoverflow.com/questions/122102/most-efficient-way-to-clone-an-object)」可能有助於其他。 –
那麼,我該如何克隆,結果可能是6,3 –
查看上述問題。但是,一個選項是['var tn = Object.create(t);'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) t''從't'繼承而不是相同。 –