在Javascript中附加到原型或对象实例的方法有什么区别?

时间:2011-11-23 14:47:14

标签: javascript oop constructor

我对Javascript中原型的使用感到有点困惑。

我们来看下面的例子:

(1)

   function Rectangle(w, h) { 
      this.width=w; 
      this.height=h; 
      this.area=function() { this.width * this.height; }
   }

类似的情况,该区域附加到原型如下:

(2)

   function Rectangle(w, h) { 
      this.width=w; 
      this.height=h; 
   }
   Rectangle.prototype.area=function() { this.width * this.height; }
  • (1)和(2)之间的差异是什么?
  • 您何时会使用(1)或(2)在课程上编写方法?

1 个答案:

答案 0 :(得分:1)

最好地展示原型。

function rectangle(w, h) {
    var rect = {};
    rect.width=w; 
    rect.height=h; 
    rect.area=function() { return this.width * this.height; };
    return rect;
}

VS

var Rectangle = {
    area: function() { return this.width * this.height; }
}

function rectangle(w, h) {
    var rect = Object.create(Rectangle);
    rect.width=w; 
    rect.height=h; 
    return rect;
}

这个想法很简单,你把普通的东西放在原型对象上,然后继承它。

至于何时想要使用原型?总是

当然你可能想要Improve ES5 OO with sugar