[英]Inheriting parent's properties in a Javascript child object
如果我具有以下兩個功能:
function Person(age)
{
this.setAge = function(newAge)
{
age = newAge;
}
this.getAge = function()
{
alert(age);
}
}
function Bob(age)
{
Person.call(this, age);
this.foo = function() {} //etc
}
Bob.prototype = new Person();
bob = new Bob(43);
bob.getAge();
是否會通知正確的年齡(43)?
答案是肯定的,但是調用setAge不會更改foo函數的age版本,因為它們是不同的捕獲變量。 考慮改用看起來更像的風格,
function Person(age) { this.age = age; }
Person.prototype.getAge = function() { return this.age; };
Person.prototype.setAge = function(value) { this.age = value; }
function Bob(age) { Person.call(this, age); }
Bob.prototype = new Person();
Bob.prototype.foo = function() { /* ... */ }
注意, foo()
和getAge()
現在對於this.age
看到相同的值。 也這是因為Person和鮑勃的實例更有效利用空間只消耗每個實例代替3-一個時隙至4,並且不需要用於getAge,setAge和Foo要創建封閉的環境。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.