Насколько я могу судить, существуют два основных способа создания функций для объекта в javascript. К ним относятся:Создание функций для объекта в javascript
Метод А, сделать это в конструкторе:
function MyObject() {
this.myFunc1 = function() {
...
}
this.myFunc2 = function() {
...
}
...
}
Метод B, добавьте его к прототипу:
function MyObject() {
...
}
MyObject.prototype.myFunc1 = function() {
...
}
MyObject.prototype.myFunc2 = function() {
....
}
Очевидно, что если вы сделали:
MyObject.myFunc3 = function() {
....
}
, то myFunc3
будет ассоциироваться с MyObject самостоятельно, а не с любыми новыми объектами, созданными с помощьюКлючевое слово. Для ясности мы будем называть его методом C, хотя он не работает для создания новых объектов с ключевым словом new
.
Итак, я хотел бы знать, каковы различия между ними. Насколько я могу судить, они имеют такой же эффект логически, даже если то, что происходит на машине, отличается.
Если бы я предполагал, что я бы сказал, что единственное реальное различие заключается в том, что вы определяете их в конструкторе, как в методе A, он создает целый новый функциональный объект для каждого созданного объекта, а метод B поддерживает только один экземпляр его (в MyObject), который он ссылается на любое время его вызова. если это так, почему бы вам сделать это один за другим. В противном случае, какая разница между методом A и методом B.
Вы также можете создавать функции в таких объектах, как [это] (http://jsfiddle.net/uwv5a/) –
читать о шаблоне модуля: http://www.engfers.com/code/javascript-module-pattern/ – bryanmac
@CoreyFarwell, я бы предположил, что это в основном то же, что и метод A, да? –