我正在尝试一种 JavaScript 设计模式(不确定它是否有名称?),其中我有原型函数作为项目的集合。要创建一个新项目,我首先实例化一个集合,获取 newItemBuilder 函数,设置我希望它具有的任何名称或其他属性,然后创建实际的项目。
但是,在每个项目中,我想检索它所属的collectionId,而不需要太多的忙乱。这在 JavaScript/Node.js 中可行吗?我可以获得某种调用者上下文信息吗?
我在这里https://gist.github.com/Niklas9/6350880创建了一个完整源代码的要点,或者查看下面的分数。
来自 Collection.js 的分数:
var Collection = function() {
this.id = 23423;
this.name = 'collection 1';
}
来自 Item.js 的分数:
var Item = function() {
this.name = null;
this.collectionId = null;
}
来自 ItemBuilder.js 的分数:
var ItemBuilder = function() {
this.name = null;
}
ItemBuilder.prototype.withName = function(name) {
this.name = name;
return this;
}
ItemBuilder.prototype.create = function() {
var item = Item;
item.name = this.name;
item.collectionId = null; // <-- this is where I want to get collectionId
return item;
}
来自来电者的分数:
var itemBuilder = collection.newItemBuilder();
var item = itemBuilder.withName('item 1').create();