2013-05-17 48 views
1

我正在閱讀關於JavaScript的書(最近開始學習)。運行書中的一個示例時,出現錯誤。我在Ubuntu上使用Chromium瀏覽器,14.0.835.202。本書示例中的錯誤 - 「意外的標記{」

由於我是新手,我不明白爲什麼會出現錯誤。提前致謝。

Function.prototype.method = function (name, fn) 
{ 
    this.prototype[name] = fn; 
    return this; 
}; 


var Person 
{ 
    this.name = name; 
    this.age = age; 
}; 


Person. 
    method ("getName", function 
    { // error here - "Uncaught SyntaxError: Unexpected token {" 
     return this.name; 
    }). 
    method ("getAge", function 
    { 
     return this.age; 
    }); 


var alice = new Person ("Alice", 93); 
var bill = new Person ("Bill", 30); 

Person. 
    method ("getGreeting", function 
    { 
     return "Hi" + this.getName() + "!"; 
    }); 

alert (alice.getGreeting()); 

編輯:

的解決方案給我,我要問一個問題。對於對象聲明:

var Object = function (...) // line 1 
{ 
    // code here 
}; 

如果變量的數目太大以至於我不想在第1行中列出它們,我該怎麼辦?同樣以後你缺少一些括號中的函數定義

var Person = function(name, age){ 
    this.name = name; 
    this.age = age; 
}; 

,如:

+0

不要把你的牙套放在一個新的行。 [它實際上很重要](http://encosia.com/in-javascript-curly-brace-placement-matters-an-example/)。 – vcsjones

+0

我覺得有人應該這樣說。無論何時定義一個函數,即使匿名或沒有任何期望的參數,仍然需要將paranthesises放在'function'或函數的名稱後面。 – Kiruse

+2

你在讀什麼書?這正是書中的內容嗎?如果是這樣......停止閱讀那本書。 –

回答

5

你缺少一個=(而且很可能是function以及)這裏

method ("getName", function() 
    { 
     return this.name; 
    }). 
+2

實際上應該仍然是錯誤的。應該是'名字:姓名,年齡:年齡',不是? – Kiruse

+0

...和括號...... – VisioN

+0

@ Derija93對,但對於其他代碼,它應該可能是一個函數定義。 – Sirko

1

function 
    { 

但是

function() 
    { 

你聲明你的函數的sintax是錯誤的。 function關鍵字後面的()(或(par1, par2, parEtc))是強制性的。

另外,var Person的聲明無效。 sintax是var varName = expression。您錯過了=。另外,您的expression很可能是function,參數爲nameage

var Person = function(name, age) { 
    this.name = name; 
    this.age = age; 
}; 

改變這一點,你的代碼工作。 See demo here