簡體   English   中英

在Javascript子對象中繼承父對象的屬性

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

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