2014-04-08 22 views
0

編輯的對象: 說我創建一個構造函數來創建自己的用戶定義的對象:使用Javascript - 實例,它的屬性已經修改

var Person = Person(age) { this._age = living; }; 

和運行過程中我發現,我需要添加到由這個構造函數創建的另一個屬性的對象,所以我用它來添加屬性的原型。

Person.prototype.alive; 

現在我唯一的構造函數只有1 val,是否有可能發送相同的構造函數另一個val?說一些像 var newPerson = Person(20,''yes);

+1

你是指通過發送這個類的構造函數值嗎? – Sarath

+3

你的問題和你的例子都是不可理解的。您正在討論創建_object_並通過創建_constructor_來演示它。那麼你在構造函數中使用一個未定義的變量,而忽略它的參數;那麼你會談論「向這個構造函數發送值」,這意味着什麼都沒有。考慮編輯你的問題並更清楚地描述你的問題。 – lanzz

+0

您需要[代理](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy「代理 - JavaScript | MDN」)。不幸的是,它們還沒有在JavaScript中實現。你的用例是什麼?我相信必須有更簡單的方法來解決你的問題。 –

回答

0

is it possible to send that same constructor another val? say something like var newPerson = Person(20,'yes');

號你也只需要一個參數的構造函數。

但是,您可以redefine the constructor,你的情況:

Person = (function (original) { 
    function Person(age, alive) { 
     original.call(this, age);   // apply constructor 
     this.alive = alive;    // set new property from new parameter 
    } 
    Person.prototype = original.prototype; // reset prototype 
    Person.prototype.constructor = Person; // fix constructor property 
    return Person; 
})(Person); 

注意,在此之前創建的舊對象會被自動得到分配新值。您需要明確地爲每個您知道的舊實例設置它們,如oldPerson.alive = 'no';

0

如果您考慮通過不同參數的構造函數,這將是友好寫構造函數接受單個對象符

function Person({paramZ: val, paramX: val}) 
相關問題