使用Javascript有什么好处吗;在这个场景中,什么是原型继承?
假设我有两个Javascript场景(NodeJS): 场景1:使用Javascript有什么好处吗;在这个场景中,什么是原型继承?,javascript,node.js,design-patterns,prototypal-inheritance,Javascript,Node.js,Design Patterns,Prototypal Inheritance,假设我有两个Javascript场景(NodeJS): 场景1: var obj = {}; obj.getAll = function(..) {...}; obj.getOne = function(..){...}; module.exports = obj; var constructor = function(){}; constructor.prototype.findAll = function(..){...}; constructor.prototype.find
var obj = {};
obj.getAll = function(..) {...};
obj.getOne = function(..){...};
module.exports = obj;
var constructor = function(){};
constructor.prototype.findAll = function(..){...};
constructor.prototype.findOne = function(..){...};
module.exports = constructor;
我在调用这个模块的代码中使用了obj
VS的内容大致如下:
场景2:
var obj = {};
obj.getAll = function(..) {...};
obj.getOne = function(..){...};
module.exports = obj;
var constructor = function(){};
constructor.prototype.findAll = function(..){...};
constructor.prototype.findOne = function(..){...};
module.exports = constructor;
在调用此模块的代码中,我根据需要从constructor
创建一个对象并使用它
场景2比场景1有什么优势吗 就内存使用或性能而言,答案是“可以忽略不计”。由于您只是创建一个对象,无论您需要多少次模块,您都会得到相同的实例(模块缓存的b/c) 在这之后,它只是归结到您希望模块的接口是什么
就我个人而言,我认为本例中的原型继承模式似乎有点奇怪,并且没有看到任何好处。它们不是等价的。第一个:
require('module')。getAll()
第二个:new(require('module'))。findAll()
。这是否是你想要的取决于你的判断。@RobW:我理解其中的区别。我的问题是,场景2在内存使用、性能或维护等方面是否比场景1有任何优势?这取决于您想对模块做什么。@Qantas94Heavy:您能详细说明一下吗?很明显,我需要这个模块,并在代码的其他部分使用它!:)是的,的确如此!例如,像jQuery或XMLHttpRequest包装器这样的东西作为构造函数可能会更好,而像JSON模块这样的东西(假装它不存在)作为对象可能会更好。事实上,将代码放入模块并不会显著改变您在这方面的选择。