我正在尝试完善我的Javascript知识。这似乎很简单,但令人困惑。

我需要将方法名称存储为变量。将我的测试用例减少到最小可能的大小,结果如下:

var someobj = {
  someMethod: function() {
      console.log('woo');
  },
  somevariable: this.someMethod
}


没有回调,一切都很简单。

console.log(someobj.someMethod);


返回值:

[Function]


大。但:

console.log(someobj.somevariable)


返回值:

undefined


我期望它返回“ [Function]”。为什么是这样?

谢谢。

最佳答案

以JSON-格式声明对象时,没有this关键字。 (是的,但是我指的是外部上下文的this,例如全局上下文中的window)您不能在这样的声明中访问当前对象。
因此,您需要随后设置该变量,如下所示:

var someobj = {
  someMethod: function() {
      console.log('woo');
  }
}
someobj.somevariable = someobj.someMethod;

关于javascript - 使用方法名称作为实例变量的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9053336/

10-13 02:21