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
(また、そうなるとは思いません!)。