[英]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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.