在按钮的onclick()中调用下面方法为什么没有输出呢
function testObj7(){
window.prototype.suo=function(s){
alert(s);
};

window.suo("111111");
}

解决方案 »

  1.   

    内置对象加方法不是你那么用的!你那么用了,肯定会提示window.prototype未定义!
    给你个例子参考一下:function aa(name){
     this.name=name;
    }
    aa.prototype.suo=function(){
    alert(this.name);
    }
    var bb=new aa('woaini');
    window.bb.suo();
      

  2.   

    个人理解是不是因为window是DOM对象,而不是javascript对象的缘故啊!而原型对象只针对js对象呢?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     
     </HEAD> <BODY>
       <script type="text/javascript">
    String.prototype.suo=function(s)
    {
    alert(s);
    }; Number.prototype.suo=function(s)
    {
    alert(s);
    }; var xx="hello";
    xx.suo(xx); var nn=10;
    nn.suo(nn);
      </script>
     </BODY>
    </HTML>
      

  3.   

    最后一句window.bb.suo();可以写成bb.suo();也可以执行,默认就是WINDOW全局域的,但是不能直接加到window下!
      

  4.   

    不好意思,更正一下:不是不能加成全局的,要加到WINDOW下也可以:但是不能用prototype,如下是可以的:window.suo=function(s){alert(s);}//多加一个window反而有点多此一举!
    window.suo('CSDN');//或者直接suo('CSDN')其效果等于直接定义一个函数,其实这样的定义效果就等于定义了一个普通函数,然后直接调用:等同于:function suo(s){alert(s);}
    suo('CSDN');//直接suo('CSDN'),
      

  5.   

    prototype针对的是JS对象,包括内置对象Object,Function,String,Number,Date...以及自定义的object而window是DOM对象