[英]Define a function with a prototype chain
假設我有一個對象X
定義為
var X = function () {};
X.prototype.doSomething = function () {};
X.prototype.doSomethingElse = function () {};
是否可以構造一個函數 f
使f instanceof X
? 請注意,我還必須能夠在沒有TypeError
情況下執行f()
。
在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
true(我也不希望如此!)。
不,這是不可能的(以標准方式)。 創建可調用對象(即函數)的每種可能性都會創建一個從Function.prototype
1繼承的對象; 之后,您將無法更改對象的[[prototype]]
2 。
也可以看看:
1:好的,ES6允許我們將Function
子類化 。 但這並沒有聽起來那么有用。
2:從ES6開始,可以使用Object.setPrototypeOf
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.