Мне любопытно, какая разница между следующими методами Javascript ООП. Кажется, они в конечном итоге делают то же самое, но считаются лучше других?
function Book(title) {
    this.title = title;
}
Book.prototype.getTitle = function () {
    return this.title;
};
var myBook = new Book('War and Peace');
alert(myBook.getTitle())
против
function Book(title) {
    var book = {
        title: title
    };
    book.getTitle = function () {
        return this.title;
    };
    return book;
}
var myBook = Book('War and Peace');
alert(myBook.getTitle())