原型的目的是什么?

在JavaScript中使用“原型”还是“this”?所以我对JS中OOP的想法有些陌生。

这两个下面的代码片段有什么区别:

function animal(){

this.name = 'rover';

this.set_name = function(name){

this.name = name;

}

}

function animal(){

this.name = 'rover';

}

animal.prototype.set_name = function(name){

this.name = name;

}

他们俩都做同一件事,所以有什么区别呢?

回答:

使用原型可以更快地创建对象,因为不必在每次创建新对象时都重新创建该功能。

执行此操作时:

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将这样创建的函数称为“特权”:它们可以访问公共数据和私有数据。

以上是 原型的目的是什么? 的全部内容, 来源链接: utcz.com/qa/407265.html

回到顶部