JavaScript原型的好处

JavaScript原型的好处,javascript,prototype,Javascript,Prototype,我一直在想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()

我一直在想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();
所以问题是,这些是正确的吗

。。。还有其他我错过的好处吗

干杯

这些都是正确的

当然,也有“缺点”:

无闭包

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); }

另外,请参见以下答案中关于原型继承的讨论:


理由充分。它基本上是类与实例属性/方法的Javascript版本