2013-05-19 5 views
3

Я рассматриваю некоторые общие способы определения классов (Constructor Pattern in Book by Addy Osmani).Определение классов в JS (ES5 vs Prototype)

2 основных пути я вижу:

  • Простые Прототипы:

    function Person(name) { this.name = name; } 
    Person.prototype.getName = function() { return this.name; } 
    
  • ES5 Object.create, Object.defineProperties

Я задаюсь вопросом, почему я мог бы даже рассмотреть ES5 путь, который, кажется, намного сложнее? Есть ли преимущества? Может быть, единственным главным преимуществом является наличие свойств только для чтения, таких как некоторые типично типизированные языки?

ответ

3

Object.defineProperties необходимо, только если вы хотите, чтобы эти свойства имели определенные атрибуты, например. неперечислимые, только для чтения или с функциями геттеров или сеттеров.

Нет необходимости использовать его для обычных классов и их методов, где описанный вами метод «простого прототипа» вполне адекватен.

Смежные вопросы