2017-08-03 207 views
0

我有以下兩個文件:對象創建使用繼承在require.js

product.js

define(function(products) { 
    return { 
    reserveProduct: function(id) { 
    console.log(id); 
    } 
    } 
}); 

purchase.js

define(["products"], function(products) { 
    return { 
    function(id) { 
    products.reserveProduct(id); 
    } 
    } 
}) 

我創建購買對象。

new purchase(1); 

現在我想purchase.js延伸AnalyExtendpurchase.js並創建一個新的對象作爲

new AnalyExtendpurchase(1); 

我想通過ID作爲參數傳遞給父對象即購買對象

通常在Java的等效代碼將爲:

Purchase.java

public class Purchase{ 
    purchase(int id){ 
    this.id=id; 
    } 
} 

AnalyExtendpurchase.java

AnalyExtendpurchase extends purchase{ 
    AnalyExtendpurchase(int id){ 
    super(id); 
    } 
} 

對象創建Java中

new AnalyExtendpurchase(10); 

我想用requirejs遵循同一對象的創建模式。

+0

你爲什麼用'new'調用'purchase'?它看起來不像構造函數,它不會傳入任何實例。 – Bergi

+3

首先忘記require.js,並學習如何在單個文件中使用JavaScript。 (將所有內容放入其自己的模塊之後都是微不足道的)。我建議看一下ES6'class'語法。 – Bergi

+0

我有限制使用require.js和我有限制遵循繼承模式。 –

回答

0

我提供以下示例例如:希望它可以幫助你..

比方說,我們有ABC()構造函數,如:

function ABC(firstName, lastName){ 
    this.firstName = firstName; 
    this.lastName = lastName; 

} 

然後讓我們來定義XYZ()構造函數,

function XYZ(firstName, lastName,subject) { 
    ABC.call(this, firstName, lastName); 

    this.subject = subject; 
} 

這裏稱之爲()用於調用定義在其他地方的功能,但在目前情況下

最後,你可以設定XYZ()的原型爲:

XYZ.prototype = Object.create(ABC.prototype); 
XYZ.prototype.constructor = XYZ; 

這裏,上面的行創建一個新的對象,並使其XYZ.prototype的價值,將繼承ABC.prototype

希望以上原型繼承樣本可以幫助您。快樂編碼:)