2015-05-02 42 views
0

嘗試瞭解由節點的util包提供的繼承支持。util在節點中繼承

var util = require('util'); 

//========================================= 
function Foo(temp){ 
    this.y = temp; 
} 

Foo.prototype.yo = function(){ 
    console.log("Yo "+this.y); 
} 

//========================================= 

function Bar(){} 
util.inherits(Bar,Foo); 

var b = new Bar(20); 
//b.y = 10; 
b.yo(); 

這裏b.yo()打印「Yo undefined」。它調用Foo的喲(),所以我想繼承正在工作。但它不打印y值。 如果b.y = 10行未註釋,則它會打印10值。試圖理解爲什麼會發生這種情況。

+0

@ hina10531它是如何相關? – zerkms

回答

4

Bar的構造函數爲空。

當您繼承某些東西時,它會複製原型屬性,但您必須自己正確實施構造函數。

所以,你在技術上可以做到這一點:

function Bar(temp) { 
    Foo.call(this, temp); 
}