Возможно, вы должны прочитать о 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
}
}