2012-06-04 126 views
2

使用这种这两个Javascript之间有什么区别?

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

及以下

function Class1() { 
}; 

Class1.prototype.test1 = function() { 

}; 

是否有这两个之间的区别?

+8

这已被问_so_许多次... – SLaks

+1

可以将一个问题关闭为2个问题重复? – Bergi

+0

[在Javascript中使用'prototype'与'this'的可能重复吗?](http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript) – Esailija

回答

3

第一个函数为每个类实例分别创建一个函数副本。
它也允许函数使用构造函数中的闭包变量。

0

也有影响性能的差异。

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

0

高效地使用后者。

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

使用原型多个对象可以保持对同一原型对象的引用。

这是一个很棒的reference了解js中的原型是如何工作的。