Вы можете видеть из ответов, которые у вас уже есть, что есть несколько способов.
#1
var o = new Object();
o.method = function(){}
#2
var o = new Object();
o.prototype.method = function(){}
#3
function myObject() {
this.method = function(){}
}
var o = new myObject();
#4
function myObject() {}
myObject.prototype.method = function(){}
var o = new myObject();
#5
var o = {
method: function(){}
}
# 3 и # 4 используют функцию конструктора. это означает, что вы можете использовать их для создания нескольких объектов одного и того же «класса» (классы на самом деле не существуют в JavaScript)
# 4 отличается от # 3, потому что все объекты, созданные с # 4, будут использовать идентичный метод 'method', потому что это свойство их прототипа. Это экономит память (но только очень маленькое количество), и если вы измените метод прототипа, все объекты # 4 будут немедленно обновлены - даже если они уже были созданы.
# 1, # 2 и # 5 все в значительной степени эквивалентны. Это потому, что, вероятно, будет только один из них за раз, поэтому тот факт, что # 2 имеет метод, добавленный к прототипу, на самом деле не имеет значения. (без учета клонирования)
Существует еще больше способов добавления методов к объектам с использованием фабрик с закрытием или добавления «статических» свойств / методов к функциям или частным вложенным функциям ...:)