Javascript 扩展对象';s的原型在Chrome中有奇怪的行为

Javascript 扩展对象';s的原型在Chrome中有奇怪的行为,javascript,google-chrome,prototype-programming,prototyping,Javascript,Google Chrome,Prototype Programming,Prototyping,有人能解释一下为什么这段代码在Google Chrome下表现得如此怪异: <script> console.log({someproperty:'hello'}) ; Object.prototype.get = function(){} ; </script> log({someproperty:'hello'}); Object.prototype.get=function(){}; 控制台中打印的对象内容没有“someproperty”,而是有一个“get

有人能解释一下为什么这段代码在Google Chrome下表现得如此怪异:

<script>
console.log({someproperty:'hello'}) ;
Object.prototype.get = function(){} ;
</script>

log({someproperty:'hello'});
Object.prototype.get=function(){};
控制台中打印的对象内容没有“someproperty”,而是有一个“get someproperty”,这是一个函数。
我用的是Chrome21.0


这是预期的吗?这是一个bug吗?

我无法向您解释为什么设置Object.prototype.get会导致这种奇怪的行为,除了这个函数几乎可以肯定是Chrome/Webkit在幕后用来生成其奇特的对象日志的函数

我可以告诉您,即使您正在设置。在console.log之后获取的原因是,在您实际单击控制台中的箭头展开对象之前,Chrome/Webkit不会检索该对象。您可以通过运行以下JSFIDLE来测试这一点:

请注意,如果您单击箭头立即展开对象,对象将看起来正常,但是如果您等待.get=function(){}三秒钟;被称之为“get”

我在22.0.1229.79中看到了这种行为(对象显示中的奇怪“get”和延迟的对象日志记录),这是意料之中的。 规范中没有关于属性名称的限制。因此,“get”是对象和原型对象属性的法定名称

这似乎是控制台的global dir()函数中的一个bug


另外:JQuery的“get”和“set”属性有问题

延迟的控制台日志记录可能已经修复,只是在Chrome中还不稳定: