为什么Object.getPrototypeOf是静态的而不是Object的原型

时间:2017-11-25 02:37:15

标签: javascript prototype

我在问为什么要获得一个对象的原型,它已经在getPrototypeOf的构造函数而不是原型中实现了Object作为静态方法?

JS创作者有没有理由不这样做

Object.prototype.getPrototypeOf = function() { return Object.getPrototypeOf(this); };

(我可以自己做,但我知道扩展JS标准对象的原型并不好)?

[编辑]看,我不建议将getPrototypeOf添加到Object.prototype,只是好奇它没有完成。我认为这是因为特定情况下可能出现故障

1 个答案:

答案 0 :(得分:1)

将任何内容放入Object的原型意味着将其添加到地球上所有现有和未来JS代码中创建的所有对象。后果将是非常不可预测的。这些额外的7个字符 - 不太高的价格来支付稳定性。

好吧,在Object.prototype中实现的这个方法只会被调用getPrototype(就getPrototypeOf而言,没有任何参数看起来有点奇怪)。这是一个非常普遍的名字,事实上有人已经在他的一个对象中拥有了这样一个具有完全不同含义的方法。好的,添加全局getPrototype不会破坏他现有的代码,但有一天我会尝试调用hisObj.getPrototype假设新的含义,我会出错。

顺便说一句,第3版ES中添加的isPrototypeOf方法比ES 5.1定义的getPrototypeOf早12年。