JavaScript原型的好处

luc*_*001 11 javascript prototype

我一直在想JavaScript的原型性质及其好处,并且归结为以下列表:

1)继承

cat.prototype = animal
Run Code Online (Sandbox Code Playgroud)

2)内存效率

a.prototype.b = function() {}

var a1 = new a();
var a2 = new a();
Run Code Online (Sandbox Code Playgroud)

那么a1.b和a2.b本质上是同一个对象,其中:

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

var a1 = new a();
var a2 = new a();
Run Code Online (Sandbox Code Playgroud)

a1.b和a2.b将是不同的函数对象并占用更多内存.

3)将方法/字段添加到已经创建的多个"野外"对象中.

var a = function() {}

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

a.prototype.b = function() {}

a1.b();
a2.b();
Run Code Online (Sandbox Code Playgroud)

所以问题是,这些是正确的吗?

......还有其他任何我错过的好处吗?

干杯!

pal*_*wim 6

这些都是正确的.

当然,也有"缺点":

没有关闭

function a() {
    var ival = 0;
    this.start = function(){ ival = setInterval(function(){ }, 300); }
    this.finish = function(){ clearTimeout(ival); }
}
Run Code Online (Sandbox Code Playgroud)

相比于:

function a() {
    this.ival = 0;
}
a.prototype.start = function(){ this.ival = setInterval(function(){ }, 300); }
a.prototype.finish = function(){ clearTimeout(this.ival); }
Run Code Online (Sandbox Code Playgroud)