X次のように定義されたオブジェクトがあるとします。
var X = function () {};
X.prototype.doSomething = function () {};
X.prototype.doSomethingElse = function () {};
そのように関数 を構築することは可能ですか? なしでもできる必要があることに注意してください。ff instanceof Xf()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(また、そうなるとは思いません!)。