2011-04-12 33 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