返回函数的构造函数的Javascript继承

时间:2011-04-12 08:03:20

标签: javascript inheritance prototype

JavaScript中是否有一种方法可以从返回函数的构造函数继承?例如:

var A = function() {
  return function(input) {
    // do stuff
  };
};

var B = function() {};
B.prototype = new A();
var b = new B();

由于

1 个答案:

答案 0 :(得分: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) { }'