<script>
function Array()
{
  alert("hi");
}
var a = [10];
</script>上面代码在IE和FF下都不会弹出框,为什么?

解决方案 »

  1.   

     Array()怎么能弹出框呢?又没调用!
      

  2.   


    function Array()
    {
    alert("hi");
    }
    var a = new Array(10);
      

  3.   

    就好比
    function String()
    {
       alert("x")
    }
    var x = "xxxx"js又没说他们一定是一样的
      

  4.   


    但是我之前看过帖子说,当JS检测到数组类型时,会自动调用数组的构造函数Array(),难道这个说法是错的?
      

  5.   

    此时的Array覆盖了js数组类型Array 再不确定的话 alert(a.length) 
      

  6.   

    [] 和 Array
    大家都在调用底层的东西
      

  7.   


    这个说法没有错。针对new Array(10)这条语句,在js执行引擎中实际上是这样执行的:var a = new Object();
    a.__proto__ = Array.prototype;
    Array.apply(a, 10);首先都是创建一个简单的对象。将其继承链指向new对象的prototype,在调用Array这个function。本来Array是一个native的function,但是现在被你覆盖成你自定义的函数了。具体我的FF和IE都可以弹出对话框。非常老的FF的js引擎对一些native的对象(如String,Array等)的constructor是有保护的,也就是js脚本是允许修改的,所以重定义Array,String没有效果。
    但是最新的js引擎都没有这些限制了。
      

  8.   

    非常老的FF的js引擎对一些native的对象(如String,Array等)的constructor是有保护的,也就是js脚本是不允许修改的,所以重定义Array,String没有效果。
    但是最新的js引擎都没有这些限制了。