2013-06-29 218 views
-2
var x = function(){ 
    this.add = function (a,b){ return a + b;} 
} 

var x = function(){}; 
x.add = function (a,b){ return a + b;}; 

var x = function(){} 
x.prototype.add = function (a,b){ return a + b;} 

var x = {}; 
x.add = function (a,b){ return a + b;} 

有人可以解釋上述各種聲明之間的區別嗎?不同JavaScript模式之間的差異

感謝

+3

** 1)**在函數內部放置一個'this'函數,但我們不知道這是什麼。 ** 2)**在函數上放置一個函數。 ** 3)**在函數的原型對象上放置一個函數。 ** 4)**創建一個普通對象並在其上放置一個函數。 .....你是什麼意思的差異?你不明白什麼?你明白了什麼?你明白這些嗎?你的問題含糊不清。 –

+0

感謝您的幫助@ CrazyTrain。得到我的答案在這裏http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript – Arun

回答

2
  1. 聲明一個「類」,可以使用new x被實例化,將有公共法「添加」,「本」在這裏,指的是將已實例化後的對象本身。

  2. 向函數x添加一個'靜態'方法,這是可能的,因爲函數是對象。

  3. 將'add'函數添加到x的原型,並且x的所有實例都將它繼承。

  4. 將一個屬性'add'添加到一個對象x並將其設置爲函數定義。這就像創建一個實例,而沒有創建過一個類。

+0

感謝您的答案@Lex。這是http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript的重複問題。 – Arun