我在问为什么要获得一个对象的原型,它已经在getPrototypeOf
的构造函数而不是原型中实现了Object
作为静态方法?
JS创作者有没有理由不这样做
Object.prototype.getPrototypeOf = function() { return Object.getPrototypeOf(this); };
(我可以自己做,但我知道扩展JS标准对象的原型并不好)?
[编辑]看,我不建议将getPrototypeOf
添加到Object.prototype
,只是好奇它没有完成。我认为这是因为特定情况下可能出现故障
答案 0 :(得分:1)
将任何内容放入Object的原型意味着将其添加到地球上所有现有和未来JS代码中创建的所有对象。后果将是非常不可预测的。这些额外的7个字符 - 不太高的价格来支付稳定性。
好吧,在Object.prototype
中实现的这个方法只会被调用getPrototype
(就getPrototypeOf
而言,没有任何参数看起来有点奇怪)。这是一个非常普遍的名字,事实上有人已经在他的一个对象中拥有了这样一个具有完全不同含义的方法。好的,添加全局getPrototype
不会破坏他现有的代码,但有一天我会尝试调用hisObj.getPrototype
假设新的含义,我会出错。
顺便说一句,第3版ES中添加的isPrototypeOf
方法比ES 5.1定义的getPrototypeOf
早12年。