我有一些像這樣的代碼保持可變鏈:鏈接功能,如果需要
function Foo(arr, prop) {
this.arr = arr;
this.isOn = prop;
}
function newFoo(arr, prop) {
return new Foo(arr, prop);
}
Foo.prototype = {
a: function() {
var result = [];
// do something and push to result
if (this.prop) // do something different with result
return newFoo(result);
},
// This is the method that determines if prop = true in the chain
b: function() {
result = [];
// do something and push to result
// this time 'prop' must be 'true'
return newFoo(result, true)
}
};
我想繼續通過true
如果鏈中的前一個元素具有prop
。 Obvisouly上面的方法是行不通的,你可以在這裏看到:
var nf = newFoo;
console.log(nf([1,2,3]).b().isOn); //=> true
console.log(nf([1,2,3]).b().a().isOn); //=> undefined
我知道我可以只返回newFoo(result, this.prop)
所有的時間在每一個方法,但我很好奇,看看是否有解決這個問題的任何其他解決方案。隨着方法數量的增長,隨着時間的推移很難追蹤這個屬性。
哦,看起來不錯,讓我試試... – elclanrs
工作完美!我必須在整個代碼中更改'newFoo'的上下文,並添加相當多的'var self = this'來保持上下文正確,但它似乎工作正常。 – elclanrs