开发者

JavasScript inheritance for constructors that return a function

Is there a way in JavaScript to inherit from a constructor function that returns a function? For example:

var A = function() {
  return function(inpu开发者_Go百科t) {
    // do stuff
  };
};

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

Thanks


By returning a function from your constructor, you're not creating an instance of A, but rather an instance of the function. Therefore, inheritance will not work.

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

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

If you need B to inherit the returned function from A, you should set it as a method of A, either locally or in the prototype chain, and pass it that way.

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

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜