Six*_*ase 14 javascript oop constructor function prototypal-inheritance
function F() {
return function() {
return {};
}
}
var f = new F();
f instanceof F; // returns false
Run Code Online (Sandbox Code Playgroud)
据我所知,如果我想instanceof工作,我需要this从构造函数返回.但我希望构造函数返回一个函数,我无法分配给this.
那么,这真的是不可能的,还是可以以某种方式完成,f = new F()以便返回一个函数并仍然f instanceof F返回true?
function F() {
var r = function() {
return {};
};
r.__proto__ = this.__proto__;
return r;
}
var f = new F();
f instanceof F;
true
f();
Object
Run Code Online (Sandbox Code Playgroud)
仅适用于浏览器 __proto__
你当然可以instanceof F通过设置使所有功能都显示出来F.prototype = Function.prototype;.
不幸的是,看起来ECMAScript不允许您创建函数子类.
但是,您可以使用不推荐使用的__proto__属性在Gecko中执行此操作:
function F() {
function f() {
return {};
}
f.__proto__ = F.prototype;
return f;
}
F.prototype.__proto__ = F.__proto__;
Run Code Online (Sandbox Code Playgroud)