javascript深层对象函数
如何使用具有函数的对象实现这一点 有时我希望以一种简单的方式启动一个函数,而其他时候我希望使用额外的数据启动,并绕过通常会发生的部分 就像挖得更深一点javascript深层对象函数,javascript,function,object,Javascript,Function,Object,如何使用具有函数的对象实现这一点 有时我希望以一种简单的方式启动一个函数,而其他时候我希望使用额外的数据启动,并绕过通常会发生的部分 就像挖得更深一点 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*/
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');
为了使调用语法起作用,
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
完成后运行。因此,您不能根据是否也调用DIFF
来更改ONEFUNC
的运行方式
也许相反,你想要锁链?链接意味着对象上的每个函数都会返回自身,以便您可以继续调用该对象上的方法
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之后,您仍然无法更改它的运行方式。您可能需要重新思考为什么需要这样做…但如果我在运行ONEFUNC时不调用diff,会发生什么?+1。您需要完全匹配原始行:
返回{DIFF:DIFF}
这样您就可以使用.DIFF了(..
@BenMuircroft您无法更改ONEFUNC
的运行方式,因为您添加到该语句中的任何内容都会对ONEFUNC
@BenMuircroft的返回值进行操作。抱歉,我不理解您的问题。如果您调用ONEFUNC
,它将始终执行。ONEFUNC
无法知道val执行了什么操作ue它返回。这是一个奇怪和痛苦的想法,因为这是一个坏主意。无论你想做什么,我敢打赌有一个更优雅的方式。但根据你目前提供的信息,很难推荐任何东西。