对象内的函数

use*_*010 20 javascript object

我知道标题含糊不清但我不知道该写些什么.
在javascript中,我知道如何编写将被调用的函数:

argument1.function(argument2);
Run Code Online (Sandbox Code Playgroud)

这是小提示演示:http://jsfiddle.net/rFXhf/
现在我想知道我能做到:

argument1.argument2.function(argument3);//And even more!
Run Code Online (Sandbox Code Playgroud)

Tah*_*ksu 26

你需要像这样定义对象:

var argument1 = {
    myvar : "12",
    mymethod : function(test) { return something; }
}
Run Code Online (Sandbox Code Playgroud)

然后打电话给mymethod:

argument1.mymethod(parameter);
Run Code Online (Sandbox Code Playgroud)

或更深的版本:

var argument1 = {
    argument2 : {
       mymethod : function(test) { return something; }
    }
} 
Run Code Online (Sandbox Code Playgroud)

然后:

argument1.argument2.mymethod(parameter);
Run Code Online (Sandbox Code Playgroud)


Gov*_*Rai 22

现代ES6方法

function在对象内定义函数时,不再需要指定关键字:

var myObj = {
  myMethod(params) {
    // ...do something here
  }
  myOtherMethod(params) {
    // ...do something here
  }
  nestedObj: {
    myNestedMethod(params) {
      // ...do somethinghere
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

以上内容与下面相同,但以下版本重复且冗长.

var myObj = {
  myMethod: function myMethod(params) {
    // ...do something here
  }
  myOtherMethod: function myOtherMethod(params) {
    // ...do something here
  }
  nestedObj: {
    myNestedMethod: function myNestedMethod(params) {
      // ...do somethinghere
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

  • 当使用 ES6 `myMethod: params => { // ...在这里做一些事情}`时,这对我来说更有意义 (5认同)
  • @鲁巴诺夫。使用箭头函数并不等同于上面的。myMethod 的上下文将导致未定义或窗口上下文。关于 JavaScript 箭头函数的 Mozilla 文档指出,“箭头函数表达式最适合非方法函数”。为此原因。参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions (4认同)