[英]Instantiate a class from another instance in JavaScript?
說我有以下代碼-“我”是指它不是我的代碼,因此我無法刪除new
操作。 實例化后,我只收到foo
的實例。
var foo = new function() {
this.bar = 'baz';
}
是否有可能獲得原始功能並在其上有效執行另一個new
功能? 如果是這樣,那么在某些情況下它將不是干凈的克隆?
var secondFoo = ...foo...
secondFoo.bar = 'qux';
foo.bar // 'bad'
secondFoo.bar // 'qux'
您可以在對象的constructor屬性中公開其構造函數:
a = new function(){ this.foo = Math.random()}
>> Object {foo: 0.11541059240698814}
a.constructor
>> function(){ this.foo = Math.random()}
b = new a.constructor
>> Object {foo: 0.867641115328297}
但最有可能的是,您不想這么做。
構造函數是用於創建新實例的藍圖。 從實例化的對象中調用構造函數本身來獲取它並不是慣用的。
刪除new
運算符。
var foo = function() {
this.bar = 'baz';
}
現在,您可以從構造函數foo
實例化新對象。
var instance1 = new foo();
var instance2 = new foo();
instance1.bar = 'test';
console.log(instance1.bar); // 'test'
console.log(instance2.bar); // 'baz'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.