<script type="text/javascript">
  function sendMessage(msg,obj){
     if(arguments.length==2){
    obj.handleMsg(msg)
     }else{
 alert(msg);
     }  
  }
  sendMessage("hello world!",{ handleMsg:function(msg){
     alert("this is a custom message:"+msg);
  
   }
  
  });
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<p onclick="makArr('one','two')">这儿是arr的测试</p>
</body>
</html>不是很明白js的一些规则,上面的js没有问题。调用sendMessage()时,第二个参数用{}这种形式写,代表一个object对象,里面是代表这个对象的方法????

解决方案 »

  1.   

    供参考:
    http://www.cnblogs.com/xiandedanteng/archive/2012/07/25/2608278.html
      

  2.   

    第二个参数表示一个对象,这个对象只有一个属性handleMsg   指向一个函数
      

  3.   

    如二楼所说
    第二个参数是一个键值对的object,handleMsg对应的是一个方法,你可以理解为方法名,接受一个参数。
    在sendMessage中可以obj.handleMsg调用这个handleMsg方法{
      handleMsg:function(msg){
        alert("this is a custom message:"+msg);
      }
    }
      

  4.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head>
    <script type="text/javascript">
    //这里其实要理解一个东西var a中,a是一个什么东西?(自己问下自己)
    //答案是它是一个容器,按照这个思维想,那么容器就是用来装载东西的,有了这个概念,我们来探讨一下LZ自己的问题。
    var obj={  //制造一个容器 类似于Collection<Object>(JAVA中的集合)
    num:1.5, //存储一个Number类型
    str:'xiaoming' ,//存储一个String类型
    story:function(){ //存储一个Function类型
    document.write(this.str+" is higher than "+this.num);
    }
    }
    obj.story(); /*
            这种属于Json格式,“:”表达的其实就是hashtable里的键值对,也就是说
            var a=b;
            var b=a;
            var y=g;
            看下面的例子    */
    //建立一个People对象
    var People={
        name:"hello",
        sex:"gril"
        }var p=People;//实例People对象
    document.write(p.name+" is a "+p.sex);</script>
     <body>
      
     </body>
    </html>
      

  5.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head>
    <script type="text/javascript">
    //这里其实要理解一个东西var a中,a是一个什么东西?(自己问下自己)
    //答案是它是一个容器,按照这个思维想,那么容器就是用来装载东西的,有了这个概念,我们来探讨一下LZ自己的问题。
    var obj={  //制造一个容器 类似于Collection<Object>(JAVA中的集合)
    num:1.5, //存储一个Number类型
    str:'xiaoming' ,//存储一个String类型
    story:function(){ //存储一个Function类型
    document.write(this.str+" is higher than "+this.num);
    }
    }
    obj.story(); /*
            这种属于Json格式,“:”表达的其实就是hashtable里的键值对,也就是说
            var a=b;
            var b=a;
            var y=g;
            看下面的例子    */
    //建立一个People对象
    var People={
        name:"hello",
        sex:"gril"
        }var p=People;//实例People对象
    document.write(p.name+" is a "+p.sex);</script>
     <body>
      
     </body>
    </html>
      

  6.   

    对象handleMsg属性的值是一个匿名函数
      

  7.   

    函数sendMessage("hello world!",{ handleMsg:function(msg)的第二个参数是一个对象,handleMsg是属性,值是一个匿名函数