2010-08-11 45 views
11

我一直想知道關於JavaScript的原型本質,它的好處,並已回落到以下列表:的JavaScript原型的好處

1)繼承

cat.prototype = animal 

2)存儲效率

a.prototype.b = function() {} 

var a1 = new a(); 
var a2 = new a(); 

然後a1.b和a2.b基本上是相同的objec t,其中:

var a = function() { 
      this.b = function() {}; 
     } 

var a1 = new a(); 
var a2 = new a(); 

a1.b和a2.b將是不同的函數對象並佔用更多的內存。

3)將方法/字段添加到多個已創建的'out of wild'對象中。

var a = function() {} 

var a1 = new a(); 
var a2 = new a(); 

a.prototype.b = function() {} 

a1.b(); 
a2.b(); 

所以問題是,這些是正確的嗎?

...還有我沒有其他的好處,我錯過了?

乾杯!

+0

有道理。它基本上是類與實例屬性/方法的Javascript版本 – 2010-08-11 20:38:43

回答

6

這些都是正確的。

當然,也有 「缺點」 以及:

沒有關閉

function a() { 
    var ival = 0; 
    this.start = function(){ ival = setInterval(function(){ }, 300); } 
    this.finish = function(){ clearTimeout(ival); } 
} 

比較:

function a() { 
    this.ival = 0; 
} 
a.prototype.start = function(){ this.ival = setInterval(function(){ }, 300); } 
a.prototype.finish = function(){ clearTimeout(this.ival); }