2016-05-30 58 views
1

我正在清理一些舊的Backbone.js應用程序,並將其大部分重寫到ES2015。如何克隆ES2015中的對象(包括其原型)

我碰到在這裏我們使用Underscore.js克隆模型的地方傳來:

var modelCopy = _.clone(this.model); 

直覺,我重寫它使用Object.assign

const modelCopy = Object.assign({}, this.model); 

事實證明,Object.assign不工作很像_.clone - 它只給我實際物體的屬性和方法 - 不是它的原型。

我知道Underscore是Backbone的一個依賴,無論如何,但我還是想知道:我怎樣才能用ES2015創建一個對象的實際克隆?

+3

沒有內置的方法,如果這是你的要求。使用之前使用的任何東西。 –

回答

1

爲了保持原型,你可以使用

const modelCopy = Object.assign(Object.create(Object.getPrototypeOf(this.model)), this.model) 
+0

哎。 ^^我認爲我會堅持用純粹的可讀性理由的下劃線方法:) –