2015-01-07 50 views
1

我使用的JavaScript對象文字的學習,我還測試了這個JavaScript在瀏覽器的JavaScript控制檯,它返回Uncaught SyntaxError: Unexpected Identifier未捕獲的語法錯誤:在對象文本意外標識符

工作代碼

"use strict"; 

var myObject = { 
    foo: 'bar', 

    talk : function(){ 
     console.log('Hello world') 
    } 
} 

myObject.talk(); 
console.log(myObject.foo); 

但如果我改成function talk(){}

"use strict"; 

var myObject = { 
    foo: 'bar', 

    function talk(){ 
     console.log('Hello world') 
    } 
} 

myObject.talk(); 
console.log(myObject.foo); 

它拋出了上面的錯誤Uncaught SyntaxError: Unexpected Identifier。預先感謝。

+0

你沒有爲函數talk()分配一個對象。 – Chad

+0

類似的屬性,你可以爲對象創建方法:'talk:function(){};'你可以像這樣調用myObject方法。談論(); – Michelangelo

+0

@Chad我該如何解決?謝謝。 –

回答

0

這是一個功能分配給屬性的正確語法:

var myObject = { 
    foo: 'bar', 
    talk: function thisNameIsOptional() { 
     console.log('Hello world') 
    } 
}; 

你也可以這樣來做:

var myObject = { 
    foo: 'bar', 
    talk: talk 
}; 

function talk() { 
    console.log('Hello world') 
} 

正如你所看到的語法總是一樣的:

{ 
    literal1: (object or function), 
    literal2: (object or function) 

    ... and so on ... 

} 

你的問題的第二個是錯誤的。如果這還不夠,你有a complete guide for variables and literals on MDN

+0

嗨@lante我怎樣才能分配'函數名稱(){}'到一個屬性? –

+0

我剛剛編輯了我的答案,給你另一種方式來綁定功能到屬性 – lante

+0

謝謝@lante這麼多,我知道多一點通過你的例子:D –

0

例子是在這裏: http://www.w3schools.com/js/js_objects.asp

當你在JavaScript中創建對象(的方式之一),要創建對象的字典。而這樣做的方法是確定:

{ 
objectName: objectValue (value or function), 
... 
} 

在第二個例子中,你做了2個錯誤(這就是爲什麼它不會編譯): - 您可以定義其他功能(範圍)內命名的功能,但對象聲明不是其中之一 - 您需要將此函數分配給名稱,該名稱將成爲此對象中的指針

這就是爲什麼您的第一個選項是正確的,而第二個選項是不正確的。

+0

我希望我寫了它容易理解 – Beri

+1

w3schools不應該視爲參考。適當的參考是ECMAScript標準。 –

1

對象文字不像構造函數那樣工作。

就像lante說的那樣,你必須設置一個標識符併爲其賦值(或函數)以使其工作。它基本上就像一個帶有鍵/值對的數組。

對於一個構造函數的代碼(作爲另一種方法):

function myObject() { 
    this.foo = 'bar'; 
    this.talk = function() { 
     alert('talk fired'); 
    } 
} 

var obj = new myObject(); 
obj.talk(); 

構造函數和對象文字之間的差異是:構造函數可以具有私有的功能和屬性,其中文字始終公共訪問(除你正在使用內部功能)。 this.talk()是一個可以從外部調用的公共函數。如果你輸入function talk()而不是this.talk那麼它是私人的,不能通過調用obj.talk();

+0

謝謝你解釋:) –

相關問題