В чем разница между методом, прикрепленным к прототипу или экземпляру объекта в Javascript? - PullRequest
0 голосов
/ 23 ноября 2011

Я немного озадачен использованием прототипов в Javascript.

Давайте рассмотрим следующий пример:

(1)

   function Rectangle(w, h) { 
      this.width=w; 
      this.height=h; 
      this.area=function() { this.width * this.height; }
   }

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

(2) * * 1 010

   function Rectangle(w, h) { 
      this.width=w; 
      this.height=h; 
   }
   Rectangle.prototype.area=function() { this.width * this.height; }
  • Какая разница между (1) и (2)?
  • Когда бы вы использовали (1) или (2) для написания методов в классах?

1 Ответ

1 голос
/ 23 ноября 2011

прототипы лучше всего показывать по-разному.

function rectangle(w, h) {
    var rect = {};
    rect.width=w; 
    rect.height=h; 
    rect.area=function() { return this.width * this.height; };
    return rect;
}

против

var Rectangle = {
    area: function() { return this.width * this.height; }
}

function rectangle(w, h) {
    var rect = Object.create(Rectangle);
    rect.width=w; 
    rect.height=h; 
    return rect;
}

Идея проста: вы помещаете обычные вещи в объект-прототип и потом наследуете от него.

А когда вы хотите использовать прототип? Всегда.

Конечно, вы, вероятно, хотите Улучшение ES5 OO с сахаром

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