2013-08-07 78 views
0

我是JavaScript新手,並試圖在我有一個帶參數的構造函數時使用頭部繼承。具有參數的構造函數的JavaScript繼承

假設我有一個基礎對象稱爲Base

function Base(param1, param2) { 
    // Constructor for Base that does something with params 
} 

我想另一個物體,例如稱爲BaseChild從基地繼承然後另一個目的稱爲ChildBaseChild繼承。

我怎麼會去使用基本的JavaScript(即無特殊插件)創造BaseChildChild的建設者?


注:

我認爲如下你也許能夠創造BaseChild:

var BaseChild = new Base(param1, param2);

但我不BaseChild有值param1param2,只有在Child。我希望這是有道理的!。

+0

可能重複[如何獲得一個構造函數從Javascript中一個構造函數繼承?(http://stackoverflow.com/問題/ 2263353 /如何到獲得-A-構造函數對繼承,從-A-構造函數式的Java) – Bergi

回答

1
// define the Base Class 
function Base() { 
    // your awesome code here 
} 

// define the BaseChild class 
function BaseChild() { 
    // Call the parent constructor 
    Base.call(this); 
} 

// define the Child class 
function Child() { 
    // Call the parent constructor 
    BaseChild.call(this); 
} 


// inherit Base 
BaseChild.prototype = new Base(); 

// correct the constructor pointer because it points to Base 
BaseChild.prototype.constructor = BaseChild; 

// inherit BaseChild 
Child.prototype = new BaseChild(); 

// correct the constructor pointer because it points to BaseChild 
Child.prototype.constructor = BaseChild; 
使用 的Object.create

替代方法

BaseChild.prototype = Object.create(Base.prototype); 
Child.prototype = Object.create(BaseChild.prototype);