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它返回。这是一个奇怪和痛苦的想法,因为这是一个坏主意。无论你想做什么,我敢打赌有一个更优雅的方式。但根据你目前提供的信息,很难推荐任何东西。