2015-07-03 29 views
1

我試圖在警報窗口中打印出人物對象的名稱值。從警報窗口中的對象中打印出一個值

 var person ={}; 
     person = { 
      name: 'Tray', 
      distance_travelled: 0, 
      say_name: alert(this.name), 
     } 

     person.say_name; 

我得到的結果是一個空的警告框。當我在名字中硬編碼時,警告框打印正確。我試過say_name:alert(person.name),但是返回一個未定義的。我究竟做錯了什麼?

回答

1

您需要指定一個函數say_name。現在,您立即調用該函數並分配其undefined返回值。這使得this指的是你期望以外的東西。

var person = { 
 
    name: 'Tray', 
 
    distance_travelled: 0, 
 
    say_name: function() { 
 
     alert(this.name); 
 
    }, 
 
} 
 

 
person.say_name();

現在this ARG將參照person對象,因爲當你做some_object.someMethod()thissomeMethod()值就會自動地設置在它被調用的some_object

+0

謝謝,它的工作 – Aaron

+0

不客氣。 – 2015-07-03 21:42:48