Если вы хотите получить максимальную отдачу от своего доллара, вы можете использовать функцию, которая позволяет вам устанавливать «общедоступные» и «частные» переменные. Например:
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() };
Я бы не рекомендовал прямоприменяемый анонимный синтаксис функции. Вы должны объявить эту функцию в другом месте (по крайней мере, для отладки); это по крайней мере дает вам возможность создать два разных экземпляра этого объекта.
Это зависит от того, что вы хотите сделать с этими объектами позже, поэтому нет лучшего способа сделать это. –
Возможный дубликат [Какой способ лучше всего подходит для создания объекта в javascript? «var» необходимо перед переменной объекта?] (http://stackoverflow.com/questions/6843951/which-way-is-best-for-creating-an-object-in-javascript-is-var-necessary- befor) – V31