Преимущества прототипа JavaScript

Мне было интересно о прототипном характере JavaScript и о его преимуществах, и пришли к следующему списку:

1) Наследование

cat.prototype = animal

2) Эффективность памяти

a.prototype.b = function() {}

var a1 = new a();
var a2 = new a();

Тогда a1.b и a2.b по существу являются одним и тем же объектом, где as:

var a = function() {
             this.b = function() {}; 
        }

var a1 = new a();
var a2 = new a();

a1.b и a2.b будут разными объектами функции и занимают больше памяти.

3) Добавление методов/полей к нескольким уже созданным объектам "out in the wild".

var a = function() {}

var a1 = new a();
var a2 = new a();

a.prototype.b = function() {}

a1.b();
a2.b();

Итак, вопрос в том, правильны ли они?

... и есть ли другие преимущества, которые я пропустил?

Ура!

Ответ 1

Все верно.

Конечно, есть и "недостатки":

Без закрытия

function a() {
    var ival = 0;
    this.start = function(){ ival = setInterval(function(){ }, 300); }
    this.finish = function(){ clearTimeout(ival); }
}

сравнить с:

function a() {
    this.ival = 0;
}
a.prototype.start = function(){ this.ival = setInterval(function(){ }, 300); }
a.prototype.finish = function(){ clearTimeout(this.ival); }