日期:2014-05-16  浏览次数:20288 次

一个JS的奇怪问题。高人请入
<script>
alert([] instanceof Array)
alert([].__proto__ === Array.prototype)

alert({} instanceof Object)
alert({}.__proto__ === Object.prototype)
</script>

?

代码如上。

在IE(6,8)中弹出结果为true,false,true,false

在FF中弹出结果为true,true,true,true

请问这是怎么回事????

?

另,上面的4句代码在FF的firebug中测试时,有时全部弹出为false。有时全部弹出为true。本人测试了不止一次,请问是怎么回事???

?

谢谢

?

1 楼 冰冷缠绵 2011-09-13  
对象通过一个内部属性绑定到它的原型.在Firefox,Safari和Chrome浏览器中,这个属性_proto_对开发者可见,而在其他浏览器却不允许脚本访问此属性.---引自<<高效JavaScript>>中27页.
2 楼 tan4836128 2011-09-13  
你应该发帖,不应该是博客。问题有些迷惑,跟踪了,不过实际遇到的情况不多
3 楼 北极的。鱼 2011-09-14  
冰冷缠绵 写道
对象通过一个内部属性绑定到它的原型.在Firefox,Safari和Chrome浏览器中,这个属性_proto_对开发者可见,而在其他浏览器却不允许脚本访问此属性.---引自<<高效JavaScript>>中27页.


======================================

谢谢,不过还有个问题。
为什么同一段代码:
alert([] instanceof Array) 
alert([].__proto__ === Array.prototype) 
 
alert({} instanceof Object) 
alert({}.__proto__ === Object.prototype)
在firebug中有时全为true,有时全为false呢??