gpt4 book ai didi

javascript - 用原型(prototype)链定义函数

转载 作者:行者123 更新时间:2023-11-28 09:35:46 24 4
gpt4 key购买 nike

假设我有一个对象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's page for __proto__ 建议使用 Object.getPrototypeOf 代替,但我真正寻找的是一个 Object.setPrototypeOf (它不存在,尽管这个想法是在 this bug report 中提出的) )。

我想要的一个简单的近似是

var f = function () {};
jQuery.extend(f, new X);

不幸的是,这并不能使 f instanceof X 为真(我也不会期待它!)。

最佳答案

不,这是不可能的(以标准方式)。创建可调用对象(即函数)的每一种可能性都会创建一个继承自 Function.prototype1 的对象;并且此后您无法更改对象的[[prototype]]2

另请参阅:

1:好的,ES6 允许我们subclass Function 。但这并不像听起来那么有用。
2:从ES6开始,可以使用Object.setPrototypeOf .

关于javascript - 用原型(prototype)链定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com