7 способов создания объектов в JavaScript:
1. Конструктор Object
Самый простой способ для создания объекта является использование конструктора объекта: вид plainprint?
var person = new Object();
person.name = "Diego";
person.getName = function(){
return this.name;
};
2. Буквенный обозначения
вид plainprint?
var person = {
person.name : "Diego",
person.getName : function(){
return this.name;
}
}
3. Функция Factory
Функция Factory позволяет инкапсулировать и повторно использовать логику для создания подобных объектов. Для этого он использует любую из предыдущих конструкций. Либо: вид прозрачный?
var newPerson=function(name){
var result = new Object();
result.name = name;
result.getName = function(){
return this.name;
};
return result;
};
var personOne = newPerson("Diego");
var personTwo = newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo
Или:
view plainprint?
var newPerson=function(name){
return {
person.name : name,
person.getName : function(){
return this.name;
};
};
var personOne = newPerson("Diego");
var personTwo = newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo
4. Функция Конструктор
В JavaScript можно вызвать любую функцию с новым оператором перед ним. Для функции F, для нового F(): создан новый пустой объект X. X задается как контекст для значения F во всем F, это указывает на X. X возвращается в результате F вид на прозрачный лист?
function Person(name){
this.name = name;
this.getName = function(){
return this.name;
};
};
var personOne = new Person("Diego");
console.log(personOne.getName()); // prints Diego
console.log(personOne instanceOf Person); // prints true
console.log(personOne.constructor === Person); // prints true
console.log(personOne instanceOf Object); // prints true
5. Прототип
Функция очень особенный в JavaScript. Это объекты, они могут создавать другие объекты, и они автоматически получают поле, называемое прототипом. Прототип - это простой объект с одним полем, называемый конструктором, указывающий на саму функцию. Что особенно важно, так это то, что каждый объект, созданный через функцию, наследует прототип функции. вид прозрачный?
function Person(){};
Person.prototype.name = "Diego";
var personOne = new Person();
var personTwo = new Person();
console.log(personOne.constructor == Person); // prints true
console.log(personOne.name); // prints Diego
console.log(personTwo.constructor == Person); // prints true
console.log(personTwo.name); // prints Diego
6. Функция/Prototype сочетание
Сочетание функции/прототип, как вы могли бы себе представить, использует преимущества обоих подходов :) вид plainprint?
function Person(name){
this.name = name;
};
Person.prototype.getName = function(){
return this.name;
};
var personOne = new Person("Diego");
var personTwo = new Person("Filippo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Filippo
console.log(personOne.getName === personTwo.getName) //prints true
7. Singleton
Иногда, вы можете захотеть, чтобы убедиться, что только один экземпляр определенного класса существует. Чтобы получить Singleton в Javascript так же просто, как определить и вызвать конструктор одновременно: посмотреть plainprint?
var singleton = new function(){
this.name = "ApplicationName";
};
В подходе 2 ключевое слово 'new' не должно быть. – Halcyon
@FritsvanCampen - Да, должно. Это создает новый объект из функции (анонимного) конструктора. –
, если ключевое слово 'new' не существует, это будет класс. – macool