2014-09-30 65 views
0
var obj = { 
    'obj1': { 
     'key': { 
      'token': 'abcd', 
      'test':' test: '+token 
      'search': function(s){return this.test} 
     } 
    } 
}; 

alert(obj['obj1']['search'].apply(this,['some text'])); 

在函数内部,关键字this引用的是函数而不是对象。好吧,就像Felix指出的那样。 如何在函数内部提供对属于同一对象的属性的访问? 我可以使用闭包,但每次都需要引用键,有没有更简洁的方法来做到这一点?js作为对象值接收同一对象的上下文

+3

*“里面一个功能,'this'关键字指的功能,而不是目标。” *这是不正确。 'this'不是指函数,除非你明确地**这样做(这是非常罕见的,看起来像'func.call(func)')。 'this'的值由**如何调用**来决定。既然你没有说明你是怎么称呼它的,我们无法真正帮助你。 – 2014-09-30 15:48:10

+0

我正在使用函数的apply方法。 – aelgoa 2014-09-30 15:58:32

+0

为什么你不能'obj.obj1.search('一些文本')'?你会有一个需要“应用”的变化参数列表吗? – apsillers 2014-09-30 16:01:09

回答

0

您可以使用对象变量的名称作为您的参考:

var dict={ 
    'key': "Something" 
    'token':'abcd', 
    'test':'test: '+token 
    'search':function(s){return dict.test} 
} 
+0

不是,我会修改我的帖子,因为对象本身是另一个对象的一部分。 – aelgoa 2014-09-30 15:53:05