在创建构造函数后使用原型有什么好处?

时间:2016-08-12 10:51:12

标签: javascript performance javascript-objects

如果你有像

这样的构造函数
var SomeClass = function(){
    this.a= "";
    this.b= "";
}

然后让我们说你用原型

添加另一种方法
SomeClass.prototype.fn = function fn(){
    console.log(this.a);
 };

为什么要使用prototype,只需将此方法添加到构造函数中即可 功能

3 个答案:

答案 0 :(得分:1)

有一些好处:

  1. 它创建一个 fn函数,由该构造函数创建的所有对象重用;这比每个对象上的单独函数更具内存效率。

  2. 让对象保持与原型的动态链接意味着当您向原型添加方法时,它们可用于已存在的对象

  3. 只有一个函数,所有相关对象的重用意味着您可以在运行时在运行时更新该函数,并且只使用更新的函数所有相关对象,甚至是已经存在的对象。

  4. 在构造函数的prototype属性上使用它意味着它可以在其他对象上使用,而不是通过构造函数创建;这通常用于产生良好效果,例如:

    Array.prototype.forEach.call(
        document.querySelectorAll("div"),
        function(div) {
            // ...
        }
    );
    

答案 1 :(得分:0)

var myClass = function(){
    this.a = "";
    this.b = "";
    this.fn = function(){
        console.log(this.a);
    }
};

现在,如果您创建了1000个对象,它们将会一遍又一遍地重复共享相同的字段:{ a: "", b: "", fn: myClass/this.fn() }

这是耗费内存的,并且是一种不好的做法。当您将fn委托给class.prototype时,代码不会重复,对象会“更轻”:{ a: "", b: "" },但他们仍然可以使用fn方法。

答案 2 :(得分:0)

因为当您使用new关键字

创建一个带有该功能的对象时
tesObject= new Class();

每次在每个对象中重新创建函数。

所以它使用更多的内存,而且使用的更少。