2014-04-14 96 views
1

我一直在使用java腳本,jquery。但我仍然無法找出適當的定義如下Java腳本的聲明這些有什麼不同

var person = function(){ 
    name = "Person1"; 
    age ="24" 
} 

function Person(){ 
    name = "Perlson1"; 
    age ="24";  
} 

var Person = { 
    name : "Person1", 
    age : "24", 
} 

誰能給我這三個類型適當的解釋,我有點糊塗了我的項目中實現的方式,

我真的很感謝它

+0

'java'和'script'之間沒有空格。 – xdazz

+1

前兩個是設置全局變量'name'和'age'的函數。最後一個是具有兩個屬性'name'和'age'的對象字面值。前兩個看起來很奇怪,不應該在任何地方使用。所不同的是:一切。 –

+0

這是一個很好的JavaScript對象,函數和範圍指南http://hangar.runway7.net/javascript/guide – dops

回答

1
var person = function(){ 
    name = "Person1"; 
    age ="24" 
} 

上述代碼定義的變量「人」,其被分配的匿名函數,其設定值2個全局變量「姓名」和「年齡」 。

function Person(){ 
    name = "Perlson1"; 
    age ="24";  
} 

上述代碼定義了一個函數,該函數爲2個全局變量'name'和'age'設置值。 因此,句法上的第一個& 2nd是定義函數的不同方式。但是,他們服務於相同的目的。要訪問它們, console.log(name); //或console.log(window.name); console.log(age); //或console.log(window.age);


var Person = { 
    name : "Person1", 
    age : "24", 
} 

上述第三代碼塊就是一個對象。它不能被任何其他代碼調用。這只是定義了Person對象,它具有2個屬性'name'和'age'。請注意,這裏的2個屬性 - 名稱和年齡屬於Person對象,而不屬於窗口。即它們不是全局變量。它們綁定到Person對象。要訪問這些, console.log(Person.name); console.log(Person.age);

2

他們是不一樣的。

在前兩個例子,你定義的函數,什麼功能做的是設置兩個全局變量nameage的值。

第三個示例是定義一個普通對象,該對象的屬性爲nameage

前兩個最有可能的應該是如下:

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

var person1 = new Person('Person1', 24); 
+1

同樣值得注意的是,在第一個例子中,您可以將該函數動態分配給一個對象 – dops

+1

@dops:您的意思是屬性值?你可以對第二個做同樣的事情。在創建函數之後,函數表達式和函數聲明之間沒有區別。 –

1

首先是一樣的第二,創建一個名爲Person功能。

但是,第三個對象創建了一個名爲Person的對象,該對象的屬性設置爲nameage

因此,使用第三,

alert(Person.name); // alerts `Person1` 
alert(Person.age); // alerts `24`