如何使用具有函数的对象实现此目的?
我希望有时以一种简单的方式启动一个函数,然后我想用额外的数据启动它并绕过通常会发生的部分。
喜欢挖得更深......myobj.ONEFUNC=function(data1,data2){
var DIFF=function(data3){
/*In here I need to use data1, data2 & data3*/
/*If this happens don't do normal*/
/*maybe*/return;
}
/*do normal code things*/
}
myobj.ONEFUNC('data1','data2').DIFF('data3');
myobj.ONEFUNC('data1','data2');
答案 0 :(得分:1)
为了使该调用语法起作用,ONEFUNC
必须返回一个函数。
myobj.ONEFUNC=function(data1,data2){
var DIFF=function(data3){
/*In here I need to use data1, data2 & data3*/
/*maybe*/return;
}
/*do normal code things*/
return {DIFF: DIFF};
}
“如果发生这种情况,请不要正常”但不会起作用。 ONEFUNC
运行,返回包含您要运行的函数的对象,然后运行DIFF
。因此DIFF
仅在ONEFUNC
完成后运行。因此,您无法根据是否同时调用ONEFUNC
来更改DIFF
的运行方式。
也许相反,你想要链接?链接意味着对象上的每个函数都返回自身,以便您可以继续调用该对象上的方法。
myobj = {
ONEFUNC: function(data1, data2) {
this.data1 = data1;
this.data2 = data2;
// other stuff
return this;
},
DIFF: function(data3) {
this.data3 = data3;
alert(this.data1 + this.data2 + this.data3);
return this;
}
};
mobj.ONEFUNC(1,2).DIFF(3); // alerts "6"
你仍然无法改变ONEFUNC
运行之后的运行方式。您可能需要重新考虑为什么需要这样做......