2012-01-29 57 views
2

我正在努力完善我的Javascript知识。这看起来很简单,但令我感到困惑。使用方法名称作为实例变量的值

我有需要存储方法名称作为变量。将我的测试用例缩小到可能的最小尺寸,结果如下:

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

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

console.log(someobj.someMethod); 

返回:

[Function] 

大。但是:

console.log(someobj.somevariable) 

返回:

undefined 

我期待它返回 '[功能]'。为什么是这样?

谢谢。

回答

1

以JSON格式声明对象时,没有this关键字。 (好吧,但是我指的是外部上下文的this,例如在全局上下文中为window)您无法在此类声明中访问当前对象。 因此,您将需要在之后设置该变量,如下所示:

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