JavaScript 使用单例模式的函数链接
JavaScript function chaining using the singleton pattern
我有一小段代码如下所示。
var MY = MY || {};
MY.Farm = (function () {
var add = function(x){
console.log(x)
return this + this;
};
return {
add: function(x){
return add(x);
}
}
});
在一个单独的文件上,我创建了 sheep
MY.Farm
的一个实例
var sheep = new MY.Farm()
我希望能够像下面这样调用带有输出的函数 6
sheep.add(3).add(2).add(1)
有什么办法可以实现吗? MY.Farm
代码段需要做哪些更改才能适应这种情况?
提前致谢。
像这样
var MY = MY || {};
MY.Farm = (function () {
var x=0;
return {
add: function(newX){
if(typeof(newX) !="undefined") {
x+=newX;
return this;
}
return x;
}
}
});
var sheep = MY.Farm();
console.log( sheep.add(2).add(4).add());
你离得不远了。诀窍是您需要在某处跟踪值,例如在私有变量中,并且 add
需要 return this
。最后,您需要一种在完成后获取值的方法:
MY.Farm = function () {
var total = 0;
return {
add: function(x) {
total += x;
return this;
},
value: function() {
return total;
}
};
};
var sheep = new MY.Farm();
sheep.add(3);
console.log(sheep.value()); // => 3
console.log(sheep.add(1).add(2).value()); // => 6
我有一小段代码如下所示。
var MY = MY || {};
MY.Farm = (function () {
var add = function(x){
console.log(x)
return this + this;
};
return {
add: function(x){
return add(x);
}
}
});
在一个单独的文件上,我创建了 sheep
MY.Farm
var sheep = new MY.Farm()
我希望能够像下面这样调用带有输出的函数 6
sheep.add(3).add(2).add(1)
有什么办法可以实现吗? MY.Farm
代码段需要做哪些更改才能适应这种情况?
提前致谢。
像这样
var MY = MY || {};
MY.Farm = (function () {
var x=0;
return {
add: function(newX){
if(typeof(newX) !="undefined") {
x+=newX;
return this;
}
return x;
}
}
});
var sheep = MY.Farm();
console.log( sheep.add(2).add(4).add());
你离得不远了。诀窍是您需要在某处跟踪值,例如在私有变量中,并且 add
需要 return this
。最后,您需要一种在完成后获取值的方法:
MY.Farm = function () {
var total = 0;
return {
add: function(x) {
total += x;
return this;
},
value: function() {
return total;
}
};
};
var sheep = new MY.Farm();
sheep.add(3);
console.log(sheep.value()); // => 3
console.log(sheep.add(1).add(2).value()); // => 6