2011-04-12 93 views

回答

1

通過從構造函數返回一個函數,你不創造A一個實例,而是函數的一個實例。因此,繼承是行不通的。

var A = function() { return function(input) {}; }; 
var a = new A(); 
>>> typeof a; 
"function" 

var A = function() {}; 
var a = new A(); 
>>> typeof a; 
"object" 

如果需要BA繼承返回的功能,你應該將其設置爲A的方法,無論是在本地或原型鏈,並通過這種方式。

var A = function() { 
    this.method = function(input) {} 
}; 

var B = function() {} 
B.prototype = new A(); 
var b = new B(); 
>>> b.method 
'function(input) { }' 
+0

謝謝。我最終使用了繼承的組合來減少重複 - 我會用這種工廠化的方式推薦給任何使用構造函數的人。 – 2011-04-12 09:28:26