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

这两者在Javascript中有什么区别吗?,javascript,Javascript,用这个 var Class1 = function() { this.test1 = function() { }; }; 以及以下 function Class1() { }; Class1.prototype.test1 = function() { }; 这两者之间有区别吗?第一个类为每个类实例创建一个单独的函数副本。 它还允许函数使用构造函数中的闭包变量。存在影响性能的差异 第一个将向所创建类的每个实例添加函数,而后者不会

用这个

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

以及以下

function Class1() { 
};

Class1.prototype.test1 = function() {

};

这两者之间有区别吗?

第一个类为每个类实例创建一个单独的函数副本。

它还允许函数使用构造函数中的闭包变量。

存在影响性能的差异

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

是的,有。看


对于这两个(独立的)差异。

在“高效”中使用后一个

JavaScript中的函数是对象。JavaScript中的每个对象都有一个隐藏的状态片段——对另一个对象的引用,称为对象的原型

使用prototype多个对象可以维护对同一prototype对象的引用


这是一个很好的了解js中原型如何工作的方法。

这之前已经被问过很多次了……一个问题是否可以重复为两个问题?可能是两个问题的重复