读书人

JS面向对象编程小结二

发布时间: 2012-08-22 09:50:35 作者: rapoo

JS面向对象编程总结二

<html>        <head><script type="text/javascript">          //创建函数:function f(x) {........} //var f = function(x) {......}       //上面这两种形式都可以创建名为f()的函数,后一种形式可以创建匿名函数       //函数定义时可以设置参数,如果传给函数的参数个数不够,则从最左边起依次对应,其余的用undefined赋值,       //如果传给函数的参数多于函数定义参数的个数,则多出的参数被忽略.     function myprint(s1,s2,s3)     {         alert(s1+"_"+s2+"_"+s3);     }          function test1(){          myprint();//undefined_undefined_undefined        myprint("string1","string2");// //string1_string2_undefined        myprint("string1","string2","string3","string4"); // //string1_string2_string3        }        function myprint2(s1,person)    {     var defaultperson=     {"name":"name1",     "age":18,     "sex":"female"      };        if(!s1)    {     alert("s1 must be input!");     return false;    }        alert(person);//undefined;    person=person||defaultperson;//接受person对象参数    //JScript 使用下面的规则来把非 Boolean 值转换为 Boolean 值:     //所有对象都被认为是 true。     //字符串当且仅当为空时才被认为是 false。     //null 和 undefined 被认为是 false。     //数字当且仅当为 0 时才是 false。     alert(s1+"_"+person.name+":"+person.age+":"+person.sex);            };        function test2()    {    myprint2();//s1 must be input!    myprint2("s1");//s1_name1:18:female      myprint2("s1",{"name":"latty","age":23,"sex":"male"});        }            //函数的arguments属性    //在每一个函数体的内部,都有一个arguments标识符,这个标识符代表了一个Arguments对象.    //Arguments对象非常类似于Array(数组)对象,都有length属性,用"[]"操作符利用索引来访问参数值,      //(比如说修改Arguments对象的length属性并不会改变它的长度).            function myargs()      {      alert(arguments.length);            alert(arguments[0]);      }                  // Arguments对象有一个callee属性,标示了当前Arguments对象所在的方法.      //可以使用它来实现匿名函数的内部递归调用.            function test3()      {            myargs();      myargs("1",[1,2]);            }            //method方法      //方法就是函数.每一个对象都包含0个或多个属性,属性可以是任意类型,      //函数本身就是一种对象,因此我们完全可以把一个函数放到一个对象里面,      //此时,这个函数就成了对象的一个方法.此后如果要使用该方法,      //则可以通过对象名利用"."操作符来实现.          var obj = {     f0:function()     {     alert("f0");     }     }; //对象包含一个方法   function f1() {alert("f1");}            function test4()  {  obj.f1 = f1;    //为对象添加方法     obj.f0(); //f0  f0是obj的方法   obj.f1(); //f1  f1是obj的方法   f1();     //f1  f1同时又是一个函数,可以直接调用   f0();    //f0仅仅是obj的方法,只能通过对象来调用      }        //在javascript的方法中,我们可以用this来取得对方法调用者(对象)的引用,从而获取方法调用者的各种属性.            function test5()    {    var obj = {"name":"NAME","sex":"female"};   obj.print = function() {  //为对象添加方法       alert(this.name + "_" + this["sex"]);   };   obj.print();  //NAME_female   obj.sex = "male";   obj.print();  //NAME_male  }//function test6(){var person = {      name:"defaultname",                 setName:function(s){                 this.name = s;                 },                 "printName":function(){                 alert(this.name);                 }          }   person.printName();       //defaultname   person.setName("newName");   person.printName();       //newName  }    //函数的prototype属性    //每一个函数都包含了一个prototype(原型)属性,这个属性构成了javascript面向对象的核心基础        </script>         </head><body><input type="button" value="test1" onclick="test1();"/><br/> <input type="button" value="test2" onclick="test2();"/><br/> <input type="button" value="test3" onclick="test3();"/><br/> <input type="button" value="test4" onclick="test4();"/><br/> <input type="button" value="test5" onclick="test5();"/><br/> <input type="button" value="test6" onclick="test6();"/><br/>          </body></html>

读书人网 >编程

热点推荐