2014-09-30 93 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