<script type="text/javascript">
 Function.prototype.f = function(){
   alert(this.toString());
}
 (function(){})()
</script>
当执行该函数后,会自动alert出[object],为什么??求解

解决方案 »

  1.   

     (function(){})()
    这个代表你去执行了function对象的原型链上属性,而f是function对象上的一个属性,所以相当于执行了一次function(){
      alert(this.toString());
    }
      

  2.   

    我的意思是(function(){})()后为什么会调用Function.prototype.f 
      

  3.   

    直接简写为以下代码:Function.prototype.f = function () {
        alert(this.toString());
    }
    ();结果应该和你的代码效果类似不解直接输入()表示什么意思,Mark一下,等高手解答
      

  4.   

    不加分号惹的祸,不加分号浏览器会把你的这段代码解释为Function.prototype.f = function(){
    alert(this.toString());
    }(function(){})()也就是把匿名空函数作为参数传为f并执行,然后再把f的执行结果当作一个函数再次执行,你可以尝试下面的代码来验证我的说法Function.prototype.f = function(){
    alert(arguments[0]);
    return function(){
    alert(2);
    }
    }(function(){})();
    如果要达到你的初衷,只需加一个;号就行了:Function.prototype.f = function(){
    alert(this.toString());
    };
    (function(){})();