我有一些这样的代码:
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
. 显然,上述方法不起作用,如您在此处看到的:
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 )
在每种方法上一直返回,但我很想知道是否有任何其他解决方案可以解决这个问题。随着方法数量的增加,随着时间的推移,将很难跟踪此属性。