LINUX.ORG.RU

Расширение через prototype

 ,


0

1

Часто встречается так:

function Foo () {
    this.value = 42;
}

Foo.prototype = {
    method: function () {}
};
Непонятно, зачем делают так, если этот прототип больше ничем не используется, а не так:
function Foo () {
    this.value = 42;
    this.method = function () {};
}

★★

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

Второй вариант тоже лучше не делать, так как ты перезаписываешь стандартный прототип, в котором есть свойство constructor. Правильные пацаны делают так:

function Foo(value) {
  this.value = value;
}

Foo.prototype.getValue = function getValue() {
  return this.value;
}

Foo.prototype.anotherMethod = function anotherMethod(param) {
  return (this.value + param) / 0;
}

var foo = new Foo(10);
console.log(foo.constructor); // [Function: Foo]

Дублирование названия метода в объявлении функции может быть полезно стектрейсов при дебаге.

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

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

FTFY

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

Как именно обойтись с этим свойством уже вопрос личных предпочтений. Я придерживаюсь мнения, что не следует подменять дефолтный объект-прототип новым.

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

я не вижу причин писал слово prototype тысячу лишних раз (если чно не настаиваю ;)

trashymichael ★★★
()
Последнее исправление: trashymichael (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.