javascript - JavaScript 原型(prototype)的好处

标签 javascript prototype

我一直想知道 JavaScript 的原型(prototype)性质及其好处,并归结为以下列表:

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) 向多个已创建的“野外”对象添加方法/字段。

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 - JavaScript 原型(prototype)的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462464/

相关文章:

Javascript 导入句柄未定义

javascript - 如何在同一行构造 Date 对象实例并调用其函数?

javascript - 带有设置标题的钻石问号

javascript - 如何在我的 Web 应用程序中使用单一模式并避免在每个页面上重复 html?

javascript - jquery中如何打印函数的返回值

JavaScript/原型(prototype)

javascript - 扩展 JS Boolean.prototype 失败

javascript - 替代(或相同?)作为 javascript 原型(prototype)

javascript - javascript私有(private)变量如何在原型(prototype)实现中工作

javascript - 关于 JavaScript 继承的困惑