用方法创建javascript对象
Create javascript object with methods?
我需要创建一个"解析器"库,并且只希望传入源文档一次。我如何提供源文档并将其存储在javascript对象中,以便我可以调用文档上的方法?
这是我正在尝试的,但是感觉真的很乱…特别是到处都是this
关键字:
'use strict';
var reader = function (info) {
this.doc = info;
this.getNode = function (name) {
var nodes = this.doc.items.filter(function (item) {
return (item.name.toUpperCase() == name.toUpperCase());
});
return (nodes.length == 1)
? nodes[0]
: null;
};
this.getItems = function (name) {
var node = this.getNode(name);
return (node ? node.items : []);
};
return this;
};
module.exports = reader;
我的目标是在我的应用程序的其他区域使用这个阅读器对象,像这样:
var infoDoc = loadFromFile(); // Loads the file from disk
var reader = require('./reader')(infoDoc);
var items = reader('widgets');
从您的使用情况来看,您正在使用工厂模式。对于这样的模式,使用this
是不必要的(因为在javascript中,基本工厂模式不是基于构造函数的)。实现它的简单方法如下:
'use strict';
var reader = function (info) {
var getNode = function (name) {
var nodes = info.items.filter(function (item) {
return (item.name.toUpperCase() == name.toUpperCase());
});
return (nodes.length == 1)
? nodes[0]
: null;
};
var getItems = function (name) {
var node = getNode(name);
return (node ? node.items : []);
};
// return a map of the functions you want to expose.
return {
getItems: getItems,
getNode: getNode
};
};
module.exports = reader;
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值