0
我正在研究一個Person構造函數,它將名稱和年齡作爲其參數,並試圖實現一種方法來檢索當前年齡值和輸出的所有'Person'實例平均。這裏是我的代碼...檢索在一個對象的所有實例中保存的值
var Person = (function() {
//private state
var inst = 1;
function Person(name, age) {
this.name = name;
this.age = age;
Object.defineProperty(this, "age", {
get: function() {
return age;
},
set: function(num) {
age = num;
}
});
Object.defineProperty(this, "_id", {
value: inst++
});
}
//Attempt to return number of instances divided by all current Person weights
Person.prototype.aveAge = function() {
return inst;
};
return Person;
}());
var jim = new Person("jim", 32);
var richard = new Person("richard", 27);
richard.age = 28;
var alfie = new Person("alfie", 42);
Person.aveAge() //Returns TypeError: Person.aveAge is not a function
我已經設置了跨所有實例(研究所)共享一個變量,每一個又一個實例被創建的時間增量,並分配一個唯一的ID。我無法弄清楚如何使用我在底部添加的aveAge原型來獲取存在的所有Person實例的每個「年齡」值。當我試圖調用它來測試變量'inst'保存正確數量的實例時,我也會得到'TypeError:Person.aveAge不是函數'。有人知道我要去哪裏嗎?
首先,'Person.aveAge()'是不是樣機,但在構造函數本身,所以'Person.prototype.aveAge ='應該是'Person.aveAge ='。其次,你使用get/set是不必要的,並且會手動設置你設置的道具。 –
'aveAge()'是Person對象的一個方法,比如'jim.aveAge()'。 – jfriend00
也許更像這樣 - > ** http://jsfiddle.net/apgk6mhL/** – adeneo