通过构造函数创建节点实例
node creating instances via costructors
在尝试nodejs时,我遇到了一个通过构造函数创建实例的问题。我创建了简单的购物车功能。文件cart。js
var items = [];
function addItem (name, price) {
items.push({
name: name,
price: price
});
}
exports.total = function () {
return items.reduce(function (a,b) {
return a + b.price;
}, 0);
};
exports.addItem = addItem;
我用节点
运行它var cart = require('./cart')
但是如果我需要创建一个Cart的多个实例该怎么办?
我试着重构我的代码,创建一个构造函数,保存items[] addItem() and total()
函数,像这样:
exports.Cart = function () {
var items = [];
function addItem (name, price) {
items.push({
name: name,
price: price
});
}
function total () {
return items.reduce(function (a,b) {
return a + b.price;
}, 0);
}
};
我这样运行:
var cart = require('./cart');
cart.addItem('Pepsi',199); // no problem with this
cart2 = new cart.Cart(); // it gives me undefined can't be a function
我明白,我可以使用PROTOTYPE属性来添加函数和道具到我的购物车因此,我创建了第二个文件cart2.js并放置如下内容:
function Cart () {
this.items = [];
}
Cart.prototype.addItem = function (name, price) {
this.items.push({
name: name,
price: price
});
};
Cart.prototype.total = function () {
return this.items.reduce(function (a,b) {
return a + b.price;
}, 0);
};
module.exports = Cart;
现在它工作了。但是为了探索所有的可能性,我想知道如何用我尝试过的第一种方法解决它。当我可以使用它作为"实例化"类的东西和作为单例的东西,只有一个实例,在同一时间。
你能告诉我如何解决这个问题吗?如果您能提供一些其他方法来解决创建可实例化类的任务,我将不胜感激。
第一个选项可能是这样的:
exports.Cart = function () {
var items = [];
// ...other private stuff...
return {
addItem: function (name, price) {
items.push({
name: name,
price: price
});
},
total: function() {
return items.reduce(function (a,b) {
return a + b.price;
}, 0);
}
// ...other public stuff...
}
};
用法:
var carts = require('carts');
firstCart = carts.Cart();
second = carts.Cart();
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- Raphael JS选择路径/对象/节点的特定实例
- 使用模型创建实例显示'不是函数'(节点使用猫鼬)
- 节点检查器/Chrome 实例不显示源文件、调用堆栈、任何内容
- 如何创建我自己的类的实例,但使其行为像节点
- 如何使用新构造函数为 json 中的每个节点创建实例
- Amazon EC2 实例上的负载测试节点.js应用程序
- 用于区分节点JS中模块/实例/方法变量的命名约定
- 为什么不't在babel节点下的Error子类实例上的工作实例
- 节点中需要Singleton实例
- 如何知道如果实例的http.服务器内节点已经在监听
- kafka节点连接到kafka的本地实例,但没有连接到远程kafka服务器
- CKEditor -当DOM节点被删除时销毁实例
- 计算节点/ JavaScript MySQL回调中的错误实例
- Javascript递归:如何对父节点的实例访问子节点
- 如何从节点.js模块正确返回一组实例
- 通过构造函数创建节点实例