LINUX.ORG.RU

Как лучше.

 


0

1
function Micro(){
    this.get = function(){
	return this;
    };	 
}

var m = new Micro();
function Micro(){
}

Micro.prototype.get = function(){
    return this;
};	 

var m = new Micro();


Какой из этих вариантов лучше использовать для создания объектов и почему.
(Вопрос к знатокам JS)

★★

Последнее исправление: Int0l (всего исправлений: 2)

Из этих — второй. В первом ты делаешь get методом m, во втором — методом прототипа m.

class из ES6 — сахар для второго.

x3al ★★★★★
()
Ответ на: комментарий от x3al

А вообще какой самый хороший метод создания объектов? И почему лучше методы в прототипе оставлять чем в this ?(У меня есть догадки но может я еще что-то упускаю).

Int0l ★★
() автор топика
Последнее исправление: Int0l (всего исправлений: 2)
Ответ на: комментарий от Int0l

Зависит от юзкейса, твой — например,

var m = {
  get() {
    return this;
  }
};

x3al ★★★★★
()

Смотря для каких целей. У тебя в первом варианте get — собственное свойство дочернего объекта. Если в этом нет явной необходимости лучше второй — так ты обобщаешь поведение, имеешь метаобъекты и экономишь память. А лучше — Object.create

filequest
()
Ответ на: комментарий от Int0l

И почему лучше методы в прототипе оставлять чем в this ?(У меня есть догадки но может я еще что-то упускаю).

Если они одинаковые у всех объектов, что ты получишь через new — зачем тратить время на то, чтобы выставлять их каждому объекту, если достаточно создать их в прототипе? Ну и твой первый вариант ломает super, среди всего прочего.

x3al ★★★★★
()
Ответ на: комментарий от Int0l

прототипную версию бывает лень расписывать, а первую имеет смысл использовать, когда не требуется много инстанций

swwwfactory ★★
()
Ответ на: комментарий от Int0l

Лучше через Object.defineProperty, чтобы твои свойства на прототипе не были перечисляемыми.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.