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

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); 
posted @ 2017-08-04 16:08  测试开发分享站  阅读(148)  评论(0编辑  收藏  举报