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) { }'
精彩评论