在Javascript中这两者之间有什么区别?

时间:2012-06-04 14:23:50

标签: javascript

使用此

var Class1 = function() {       
        this.test1 = function() {
        };
    };

以及

function Class1() { 
};

Class1.prototype.test1 = function() {

};

这两者之间有区别吗?

4 个答案:

答案 0 :(得分:3)

第一个为每个类实例单独复制一个函数 它还允许函数使用构造函数中的闭包变量。

答案 1 :(得分:0)

也有影响表现的差异。

第一个将为创建的类的每个实例添加函数,而后者则不会。对于后一种方法,JavaScript将查看对象的prototype链,并返回所需的方法,即test1

答案 2 :(得分:0)

答案 3 :(得分:0)

使用后者有效。

JavaScript中的函数是对象。 JavaScript中的每个对象都包含一个隐藏的状态 - 对另一个对象(称为对象的原型)的引用。

使用原型多个对象可以维护对同一原型对象的引用。

知道js中的原型如何工作,这是一个很棒的reference