2015-02-11 2 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

Это зависит от того, что вы хотите сделать с этими объектами позже, поэтому нет лучшего способа сделать это. –

+0

Возможный дубликат [Какой способ лучше всего подходит для создания объекта в javascript? «var» необходимо перед переменной объекта?] (http://stackoverflow.com/questions/6843951/which-way-is-best-for-creating-an-object-in-javascript-is-var-necessary- befor) – V31

ответ

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

+0

Помните об этом. Спасибо за информацию! – Fahim

Смежные вопросы