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

Я задавался вопросом о prototypal характере JavaScript и преимуществах его, и свелся к следующему списку:

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

cat.prototype = animal

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

a.prototype.b = function() {}

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

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

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

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

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

3) Добавление методов/полей нескольким, уже созданным, 'в диких' объектах.

var a = function() {}

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

a.prototype.b = function() {}

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

Таким образом, вопрос, они корректны?

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

Удачи!

11
задан lucas1000001 11 August 2010 в 20:19
поделиться

2 ответа

Все верно.

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

Нет закрытий

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); }
6
ответ дан 3 December 2019 в 10:43
поделиться

http://en.wikipedia.org/wiki/Prototype-based_programming#Comparison_with_class-based_models

Также см. Обсуждение наследования прототипов в ответах на этот вопрос:

наследование на основе прототипов и классов

2
ответ дан 3 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: