Nikulio
@Nikulio
NaN !== NaN

В чем отличие между наследованием в объектах и прототипах?

И так, у нас есть конструктор:

function Func(name) {
  this.name = name;
}


Метод можно добавить внутрь :
function Func(name) {
  this.name = name;

  this.sayHi = function() {
    alert( "Моё имя: " + this.name );
  };
}

или в прототип:
Func.prototype.sayHi = function() {
    alert( "Моё имя: " + this.name );
  };


Какая между ними разница?
  • Вопрос задан
  • 539 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Прототип будет общий у всех объектов наследников, притом для самих объектов данные поля не будут собственными
А в случае создания методов внутри конструктора каждый раз будут создаваться новые функции, что медленнее и жрет больше памяти
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
var foo = new Func('foo');
var bar = new Func('bar');

console.log(foo.sayHi === bar.sayHi);


В первом случае выдаст false, во втором - true.

https://learn.javascript.ru/prototype
Ответ написан
Комментировать
@arctblake
В первом случае каждый раз, когда создается новый объект в него записывается все подряд - и обычные свойства и свойства-методы. Во втором случае - только обычные свойства. Это экономнее по памяти, так как зачем в каждый объект записывать методы, если эти методы одинаковые для всех подобных объектов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы