2016-10-03 3 views
0

Недавно я начал изучать прототипы в Javascript. Я смущен о преимуществах добавления методов в прототип. Вот пример того, что я имею в видуПреимущества прототипирования объектов Javascript?

Один из способов вычисления площади круга может быть, как это

function Circle(radius, area){ 
    this.radius = radius; 
    this.area = (radius*radius*Math.PI); 
} 

Но тогда другой путь был бы как этот

function Circle(radius, area){ 
    this.radius = radius; 
} 

Circle.prototype.area = function(){ 
    return this.radius*this.radius*Math.PI 
} 

Что такое преимущество сделать метод области частью прототипа против помещения метода непосредственно в конструктор?

+1

Вы не поместили метод в конструктор. Если бы у вас было, преимущество было бы в том, что метод прототипа доступен для всех экземпляров, а не для создания нового метода для каждого экземпляра. –

+0

Что делать, если вы хотите добавить метод к собственной функции, к которой у вас нет доступа к конструктору. –

+1

Это просто плохой пример (с некоторыми запутанными реализациями/аргументами), но в основном, подумайте о строках ... вы «как» с методами прототипов на строках? это «преимущество». – Amit

ответ

0

В чем преимущество создания метода области в составе прототипа против помещения метода непосредственно в конструктор?

Вы не ставите метод в конструктор, а вместо этого уже вычисленное значение области. Областной метод имеет следующие преимущества:

  • Текущее значение рассчитывается, даже если радиус изменен.
  • Посторонний код не может быть изменен на неправильное значение.
  • Вы можете изменить устройство, которое используется внутри, не затрагивая код, который использует этот объект.
  • Ей (надеюсь) требуется меньше памяти, которая может быть полезна, если у вас есть огромное количество этих объектов.
Смежные вопросы