簡體   English   中英

在JavaScript中從另一個實例實例化一個類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM