2015-02-11 93 views
1

它看起來像有許多方法在Javascript每下方創建對象:使用Javascript - 推薦的方法來創建一個對象

var person = { 
    firstName:"John", 
    lastName:"Doe", 
    age:50, 
    eyeColor:"blue" 
}; 

function person(){ 
    this.firstName = 'first'; 
    this.lastName = 'last'; 
    this.age = 'age'; 
    this.eyeColor = 'eyecolor'; 
} 

person = (function() { 
    this.firstName = 'first'; 
     this.lastName = 'last'; 
     this.age = 'age'; 
     this.eyeColor = 'eyecolor'; 
}(); 

可能有人請幫助我理解它的上面一個是使用的最佳實踐?

還有我們在什麼情況下使用自調用函數?

+5

這取決於你以後想用這些對象做什麼,所以真的沒有最好的辦法。 – 2015-02-11 05:29:14

+0

可能的重複[哪種方式最適合在javascript中創建對象?在變量的對象之前必須是「var」](http://stackoverflow.com/questions/6843951/which-way-is-best-for-creating-an-object-in-javascript-is-var-necessary- befor) – V31 2015-02-11 05:45:52

回答

2

如果您想獲得最大的回報,您可以使用一個函數,該函數允許您設置「公共」和「私人」變量。例如:

function Person (name, age) { 
    var number = (Math.random() * 100) | 0; 
    // number is private; there's no way to access it outside 
    // of the scope of this function 
    var surpriseParty = new Date(Date.now() + number*24*3600*1000); 
    // we're throwing you a party within the next 100 days 
    this.name = name; // public 
    this.age = age;  // public 
    return { 
     getName: function() { return name }, 
     getAge: function() { return name }, 
     getPartyDate: function() { return surpriseParty } 
    } 
} 

如上面的代碼註釋,現在只有某些變量可以被訪問:

var p = new Person("royhowie", 18); 
// p.getName() => "royhowie" 
// p.name => "royhowie" 
// p.getAge() => 18 
// p.age => 18 
// p.number => undefined 
// p.surpriseParty => undefined 
// p.getPartyDate() => date within the next 100 days 

事實上,雖然,你應該使用任何符合該法案最好的。以上方法是封裝數據的一種簡單的方法,但是如果你想要的一切是公開的,正常使用的對象語法:

var p = { name: "royhowie", age: 18, surpriseParty: new Date() }; 

我不建議自執行的匿名函數的語法。你應該在別處聲明函數(至少用於調試);這至少可以讓您選擇創建該對象的兩個不同實例。

0

這個問題已經回答了here,它正確地表明沒有推薦的創建JavaScript對象的方法。它完全取決於你的用例。

根據W3schools有創建對象的標準方式:

的標準方法來創建一個「對象類型」是使用對象構造函數。這裏是一個例子:

function person(first, last, age, eyecolor) { 
    this.firstName = first; 
    this.lastName = last; 
    this.age = age; 
    this.eyeColor = eyecolor; 
} 
var myFather = new person("John", "Doe", 50, "blue"); 
var myMother = new person("Sally", "Rally", 48, "green"); 

希望這有助於! :)

+1

請**不要**引用W3Schools。閱讀[本頁](http://www.w3fools.com)。有[[許多]](http://www.webplatform.org)其他[參考](https://developer.mozilla.org/en-US/)可用,是100倍更好。 – royhowie 2015-02-11 05:45:12

+0

請記住這一點。謝謝(你的)信息! – Fahim 2015-02-11 16:16:57

相關問題