dbr*_*dbr 3 javascript prototype-chain
我正在处理的一个项目目前已经调用了一个对象类型Chain,它本身只生成一种Link只使用它的对象.在之前的项目中,我已经嵌套了构造函数Link内部的对象构造函数和原型Chain,但是,我开始怀疑这次是否是最好的方法,因为我实际上似乎是Chain用它自己的定义设置每个的Link每一次.
为清楚起见,这是我原来的代码:
var Chain = function() {
var self = this;
var Link = function(key) {
this.prop = key;
};
Link.prototype.attach = function(args) {
for (let value of args) {
this[value.prop] = value.value;
}
};
self.links = [];
}
Chain.prototype.add = function(key) {
this.links.push(new Link(key));
}
Run Code Online (Sandbox Code Playgroud)
然后我开始想知道我是否应该将Link构造函数和原型存储在野外(就像我一样)Chain(对于记录,它不是在野外,它实际上包含在一个对象中)或者我是否应该使用原型Chain定义Link并保持它.
在这种情况下,我没有找到关于最佳实践的大量信息,虽然我强烈怀疑我的第一种做事方式不是最佳/正确的方式; 我不确定我的替代品是否也是.
所以我想问一下,这样做的最佳实践/最有效/最明智的方法是什么?
在之前的项目中,我已经嵌套了构造函数
Link内部的对象构造函数和原型Chain,但是,我开始怀疑这次是否是最好的方法...然后我开始想知道我是否应该将
Link构造函数和原型存储在野外,就像我一样Chain
还有第三种选择:一个Link私有的Chain:
var Chain = (function() {
function Link() {
// ...
}
// Link.prototype stuff here
function Chain() {
// ...
}
// Chain.prototype stuff here
return Chain;
})();
Run Code Online (Sandbox Code Playgroud)
现在,Chain是公开的,Link是私人的,但只有一个,Link而不是为每个人创造一个新的Chain.
这与ES2015 + class语法同样有效:
const Chain = (function() {
class Link {
// ...
}
class Chain {
// ...
}
return Chain;
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |