如果我的方法链看起来像这样:
object.value.add(1).multiply(2);
对象是这个:
var object = {
"value":1,
"add":function(x){
this.value = this.value + x;
return this;
},
"multiply":function(x){
this.value = this.value * x;
return this;
}
}
这将输出:
{
"value":4,
"add":function(x){
this.value = this.value + x;
return this;
},
"multiply":function(x){
this.value = this.value * x;
return this;
}
}
但是我希望它输出:
4
这可能吗? 而且我不想为输出创建其他方法,我希望“乘”方法(和“加”方法)将整个对象相乘(如果它不是方法链中的最后一个)(因此该方法链)可能),但是最后一次,我希望它输出“值”属性。
答案 0 :(得分:2)
没有一种有效的方法(甚至可能没有方法)让方法知道它是否是链的最后一个成员。
为什么不呢?
object.add(1).multiply(2).value
您还可以在非常特定的情况下利用valueOf
,但不能将其用作实现此目的的通用策略。
var object = {
"value":1,
"add":function(x){
this.value = this.value + x;
return this;
},
"multiply":function(x){
this.value = this.value * x;
return this;
},
valueOf: function () { return this.value; }
};
console.log(object.add(4).multiply(2) / 2); //5