2014-02-06 6 views
0

Я видел два способа создания экземпляров:Создание экземпляров из классов

Метод 1

function Contact(first, last) { 
this.firstName = first; 
this.lastName = last; 
this.fullName = function() { 
    return this.firstName + " " + this.lastName; 
    }; 
} 

Метод 2

var Associate = function(first, last) { 
this.firstName = first; 
this.lastName = last; 
this.fullName = function() { 
    return this.firstName + " " + this.lastName; 
    }; 
}; 

Есть ли какие-либо преимущества первого над другим?

Какая для них правильная терминология? Я считаю, что их предполагается называть «Object Constructor Functions», но я также видел их называемыми классами.

+0

Возможный дубликат [var functionName = function() {} vs function functionName() {}] (http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname) – Philipp

+0

Да , это дублирующий вопрос и должен быть закрыт. –

ответ

1

Метод 1 является определениефункции, в то время как метод 2 является функцией выражение а, который присваивается переменной. И в конечном итоге делает нечто подобное, но с отличиями:

  • последовательность событий отличается (см Подъемный)
  • метод 2 не установлен параметр функции name

Что касается терминологии - «конструктор функции» является общим термином для них:

var foo = new Contact(); 
console.log(foo.constructor === Contact) // true 

Технически нет ничего особенного в этой функции, хотя. Соглашение заключается в том, чтобы использовать функции, предназначенные для использования в качестве конструкторов.

-1

Оба метода 1 и метод 2 являются синтаксически правильными, но метод 1 аналогичен стандарту, если вы хотите создать класс в Javascript.

Способ 1 обеспечивает лучшую читаемость.

Метод 2 хорош для функциональных переменных, когда вам необходимо передать функции другим частям программы.

+1

http://stackoverflow.com/a/336868/1066946 для реальной разницы – Philipp

+0

@ user1066946 Вопрос больше в контексте конструкторов объектов. большое спасибо за ссылку –

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