В чем разница между непосредственным добавлением метода в конструктор JavaScript и добавлением метода с использованием прототипа? - PullRequest
3 голосов
/ 28 мая 2011

Я использую JavaScript Джона Резига стиль определения класса . Ниже приведен пример класса.

var Person = Class.extend({
  init: function(isDancing){
    this.dancing = isDancing;
  },
  dance: function(){
    return this.dancing;
  }
});

Альтернативный способ определения метода танца:

Person.prototype.dance = function(){
   return this.dancing;
};

Мне нравится использовать первый способ, но кто-то сказал мне, что он неэффективен. В чем разница между двумя способами?

1 Ответ

0 голосов
/ 31 мая 2011

Только что сам нашел решение.

Функция расширения Джона Резига автоматически создает конструктор из объекта, переданного в качестве аргумента. Во-первых, метод танца в объекте будет автоматически назначен прототипу возвращаемого объекта. Это означает, что возвращенный конструктор (класс) будет фактически использовать второй стиль. Поэтому нет необходимости использовать 2-й способ.

Таким образом, при использовании кода Джона Резига первый способ НЕ является неэффективным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...