2017-08-03 59 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

希望以上原型继承样本可以帮助您。快乐编码:)