javascript更深层次的对象功能

时间:2013-11-24 06:00:17

标签: 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*/
        /*maybe*/return;
        }
    /*do normal code things*/
    }


myobj.ONEFUNC('data1','data2').DIFF('data3');

myobj.ONEFUNC('data1','data2');

1 个答案:

答案 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运行之后的运行方式。您可能需要重新考虑为什么需要这样做......