假设我有一个对象X
定义为
var X = function () {};
X.prototype.doSomething = function () {};
X.prototype.doSomethingElse = function () {};
是否有可能构造一个函数 ?请注意,我也必须能够没有.f
f instanceof X
f()
TypeError
在 Mozilla 中,我可以做我想做的事__proto__
:
var f = function () {};
f.__proto__ = new X;
但是,这是 (1) 非标准和 (2) 已弃用的。MDN 的页面__proto__
建议Object.getPrototypeOf
改用,但我真正想要的是一个Object.setPrototypeOf
(它不存在,尽管这个想法是在这个错误报告中提出的)。
我想要的一个便宜的近似值是
var f = function () {};
jQuery.extend(f, new X);
不幸的是,这并不f instanceof X
成立(我也不希望它成为现实!)。