使用.prototype声明方法的效果?

时间:2013-02-20 19:25:58

标签: javascript object

请参阅这个带有原型区域方法的简单圆类的示例:

var Circle = function(radius) {
    this.radius = radius;
}

Circle.prototype.area = function() {
   return Math.PI*this.radius*this.radius;
}

上面声明的区域函数和它首先被声明为Circle的公共方法之间的区别是什么?无论哪种方式,圆圈的个别实例都有自己的区域,不是吗?有什么区别??

this.area = function(){return Math.PI*this.radius*this.radius;}

3 个答案:

答案 0 :(得分:3)

this.area = function(){}创建函数并将其分配给area的{​​{1}}属性。 this创建一个函数,并将其分配给Circle.prototype.area = function(){}构造函数创建的prototype个对象。

答案 1 :(得分:3)

如果在构造函数中声明它,则Circle的每个实例都将具有该函数的单独副本。这只会浪费资源,因为所有Circle个对象都可以共享相同的代码。

答案 2 :(得分:1)

this指向函数对象的实例,.prototype“指向”创建实例的函数构造函数(只有一个)。通常在经典继承中,类创建对象实例。但是在JavaScript中,因为没有类,“函数构造函数”会创建对象实例。有时候我会听到人们说“功能对象”。

相关问题