使用原型可以更快地创建对象,因为不必在每次创建新对象时都重新创建该功能。
执行此操作时:
function animal(){ this.name = 'rover'; this.set_name = function(name){ this.name = name; }}每次创建动物时,都会从头
set_name创建该函数。但是当你这样做
animal.prototype.set_name = function(name){ this.name = name;}不必每次都重新创建该函数;它存在于原型中的一处。所以,当你打电话
someAnimal.set_name("Ubu");的this情况下将被设置为
someAnimal和(独一无二的)
set_name函数将被调用。
但是,使用第一种语法有一个优点:以这种方式创建的函数将可以访问私有数据:
function animal(){ var privateData = 'foo' this.name = 'rover'; this.set_name = function(name){ this.name = name; alert(privateData); //will alert 'foo' }}出于这个原因,Douglas Crockford将这样创建的函数称为“特权”:它们可以访问公共数据和私有数据。



