(9)自定义对象:四种方式

来源:互联网 发布:linux的图形界面工具 编辑:程序博客网 时间:2024/06/18 08:12

js自定义对象,应该先对对象进行描述。
js是基于对象,不是面向对象,不具备描述事物的能力。
我们还想按照面向对象的思想编写。
就要先描述,在js中,可以通过函数来模拟面向对象中的描述
下面创建对象是4种方式,但是调用对象成员均有两种方法
调用属性①p[“属性名”] ②p.属性名
调用方法①p[“属性名”]()②p.方法名
而且可以在创建了对象后,任意添加方法或者属性,若用本对象属性,则用this
方法一、定义构造函数,然后通过构造函数声明对象

      function Person()//相当于构造器      {        }      //通过描述进行对象的建立 new,在声明一个对象实例时,必须使用new关键字      var p=new Person();      //对象的成员(属性和函数)可以无限制的添加      //动态给p对象添加属性,直接用p.属性名即可      p.name="zhangsan";      p.age=29;      //如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法      p.show=function()      {          alert("show:"+this.name+":"+this.age);        }      //访问对象属性两种方法:①对象名.成员名      p.show();

方法二、创建Object对象,然后用此对象创建属性或者方法

     var obj=new Object();     obj.name="god father";     obj.age="66666";     alert(obj.name+":"+obj.age);

方法三、模拟Java中类,即先抽象描述事物,再创建对象

 //第三种方式:描述事物,然后创建对象    /* function Person(name,age)     {         //给Person对象添加两个属性         this.name=name;         this.age=age;         //添加两个方法,注意this.在js中不能省略         this.setName= function (name)         {             this.name=name;         }         this.getName=function()         {             return this.name;         }     }     var p=new Person("旺财",20);     println(p.name);     p.setName("小强");     println(p.getName());    for(x in p)    {        println(x+":"+p[x]);//属性或者函数    }

方法四、键值对方式创建对象

var pp={         //定义一些成员         "name":"小明","age":26,         "getName":function()         {             return this.name;         }     }     //对象调用成员有两种方式:对象.属性名  对象["属性名"]     println(pp["age"]+":"+pp.name);     var Map=     {         8:"小强",3:"旺财",7:"小明"     }     function get(key)     {         return Map[key];     }     var s=get(7);     println(s);  

方法四中更复杂的应用

var myMap={        name:["小a","小b","小c"],nums:[21,24,36],        names:[{name1:"zhangsan"},{myname:"hahah"}]    }    println(myMap.name[1]);//myMap.names是个数组,所以可以用索引指定输出内容    println(myMap.names[0].name1); 
原创粉丝点击