2011-01-12 3 views

ответ

3

Возможно, вы должны прочитать о prototypes.

В первом примере вы устанавливаете функцию setTitle на тот самый экземпляр Book, который создается.

Во втором примере вы используете прототипное наследование, другими словами, все Books теперь наследуют одну и ту же функцию setTitle.

Второй сохраняет память, и функции легче «обновить» во всех экземплярах Book.

Но первый вариант имеет прецеденты, так как вы можете оставить this на титульном листе и сделать переменную приватной с использованием closures.

function Book(title) { 
    var title = title; 

    this.getTitle = function() { // function keeps a reference to title 
     return title; // now we only have a getter, but no setter for title 
         // thus title is essentially private 
    } 
} 
2

При использовании Book.prototype.setTitle создается только одна setTitle-функция и используется для всех будущих экземпляров книги.

В первом примере каждый экземпляр книги будет создавать каждую собственную функцию setTitle.

Следовательно, рекомендуется использовать прототип.

0

первый установит свойство title и метод setTitle непосредственно на экземпляр книги. второй ставит этих членов в прототип книги. Второй, как правило, лучший подход для JavaScript ООП.

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