dev*_*747 1 javascript method-chaining
在线阅读后,我写了这个简单的代码,通过链接进行加法和乘法.但是,阅读代码,对我来说,"结果"方法使代码的可读性降低,而且看起来有点多余.有人可以帮我摆脱结果功能吗?
var Calculator = function () {
var result = 0;
this.Add = function (x) {
result = result + x;
return this;
};
this.Multiply = function (x) {
result = result * x;
return this;
};
this.Result = function () {
return result;
}
};
var total = new Calculator().Add(2).Add(3).Multiply(5);
alert(total.Result());
Run Code Online (Sandbox Code Playgroud)
我想要实现的是
var total = new Calculator().Add(2).Add(3).Multiply(5);
alert(total);
Run Code Online (Sandbox Code Playgroud)
你可以用原型设计做一些有趣的事情:
var Calculator = function(){ /*...*/ }
// Works with alert
Calculator.prototype.toString = function(){
return this.Result();
}
// Works with operators
Calculator.prototype.valueOf = function(){
return this.Result();
}
var total = new Calculator().Add(2).Add(3).Multiply(5);
alert(total); // 25
total + 1; // 26
Run Code Online (Sandbox Code Playgroud)
请注意,该函数alert(...)在使用之前将参数转换为字符串.toString().这也适用于具有字符串的任何其他操作,例如串联(例如,total + "")使用数字操作.valueOf().