JS中对象的使用

JavaScript中的基本数据类型
        number(数值类型)
        string(字符串类型)
        boolean(布尔类型)
        null(空类型)
        undefined(未定义类型)
        object


1.系统内置对象。
    String        字符串对象
    Date        日期对象
    RegExp        正则表达式对象
    Array        数组对象
    Boolean        布尔对象
    Number        数值对象

    
2.自定义对象
    (1) 自定义对象方式一: new Object() 方式创建对象
        var 对象引用名 = new Object();
        对象引用名.属性名1 =属性值1;
        对象引用名.属性名2 =属性值2;
        对象引用名.方法名1 =function(){方法体;}

        -- 使用对象:
                对象引用名.属性
                对象引用名.方法

    (2)自定义对象方式二:json格式创建对象
    
        var 对象引用名={
            属性名1:属性值1,
            属性名2:属性值2,
            方法名:function(){方法体;}
        }
        
        -- 使用对象:
                对象引用名.属性
                对象引用名.方法

3 . 构造函数

    (1)定义构造函数的格式: 
            function 首字母大写的构造函数名(参数1,参数2){
                    this.属性名1 = 参数1;
                    this.属性名2 = 参数2;
                    this.方法名 = function (){
                        方法体;
                    }
            }        
            
    (2) 使用构造函数:
    
        -1- 创建对象并给属性赋值 :
            var 对象引用名 = new 构造函数名(实际参数1,实际参数2);
        
        -2- 调用方法:
            对象引用名.方法名();
            
            
    (3)    constructor属性 和 instanceof操作符
        
        -1- constructor 用法
            对象引用名.constructor     //获取构造函数对象
            
            该属性常用于,获取构造对象, 判断是否和某个构造函数是否相等。
            例如:Person构造函数,创建的对象var p = new Person()
                    alert(p.constructor == Person); 
                    //判断p这个对象引用是否由Person实例化而来
            
            
        -2- instanceof 用法(判断是否由什么实例化而来)
            例如判断对象     var p = new Person();
                            p 是否由 Person 实例化而来
                            
            alert(p instanceof Person)             // 结果为true
            alert(flower1 instanceof Object);      //结果也为true
            (因为Object 是js中所有对象的父对象。)
            
            
4.原型对象  prototype (原型,雏形,初始状态)

    (1)什么是原型对象    
    
        -1- 原型对象的存在
            任何js中的对象,都有一个原型对象,可以通过调用prototype属性获取
            (类似于java中的 class加载到内存中的字节码对象)
            
        -2- 原型对象 和java中的字节码对象 的比较 理解    
            可以用这个字节码对象中的描述的属性和方法,实例化出来无数个具体对象
            而这些具体的对象,都具备字节码对象中描述的属性和方法。
            
        -3- 原型对象 应用场景
            js中的这个原型对象,获取到并且添加 额外的属性,和方法,
            那么,则所有由这个原型对象,创建的对象,都具备了该属性,及方法。
            
    
    (2)原型对象的作用    :
            
            扩展对象的属性和方法    
            这些js中对象,可以直接使用原型对象增加扩展的属性和方法            
    
    (3)如何获取一个对象的 原型对象
            对象名.prototype
            
            -1- 给原型对象添加 属性及方法。
            
                对象名.prototype.属性名1=属性值1;
                对象名.prototype.方法名1=function(){
                    方法体;
                }
            
    

5.    原型链 让子父对象产生继承关系。

        定义:
            一个原型对象是另一个原型对象的实例
            相关的原型对象层层递进,就构成了实例与原型的链条,就是原型链

        用法:
            通过 prototype 让对象之间产生继承关系。
            子对象.prototype=new 父对象();  
            
        例如:    
            function Humans(){
                this.foot=2;
            }

              function Man(){
                this.head=1;
            }
            Man.prototype=new Humans();  
            var man1=new Man();
            
            则,Man对象的引用man1 具备 Humans的所有属性方法,和Man的所有属性及方法
            
            
6.借用构造    
        为了方便对象之间产生继承关系
        ECMAScript 三版为 Function 对象加入了两个方法,即 call() 和 apply()。    
            
    (1)call()
            call() 它的第一个参数用作 this 的对象。其他参数是构造所需参数。
            
            语法: 被继承父对象名.call(this,被继承构造所需参数);
            
                    this 代表当前对象,也就是子对象。
                    
            在本类构造中,调用父类构造的call方法。    
            例如:
                 function Flower(name) {
                    this.name = name;
                }
                function QiangWei() {
                    Flower.call(this,"花")
                    this.type = "蔷薇科";
                }

    (2) apply()
            apply() 方法有两个参数,用作 this 的对象和要传递给函数的参数的数组
            
            语法:被继承父对象名.apply(this, 父对象构造所需参数数组);

            注意:
                只有父类中的参数顺序与子类中的参数顺序完全一致时
                才可以传递参数对象。                
                如果不是,就必须创建一个单独的数组,
                按照正确的顺序放置参数。
                
                或者可以使用 call() 方法。
                
                
    (3)示例: 
              function Humans(name){
                this.name=name;
            }
            function Man(){
                Humans.call(this,"mary");   //继承了Humans,同时还传递了参数
                this.age=38;              //实例属性
            }
            var man1=new Man();
            alert(man1.name);       //输出mary
            alert(man1.age);        //输出38


7. 组合继承

    组合继承:有时也叫做伪经典继承
            将原型链和借用构造函数的技术组合到一块,
            发挥二者之长的一种继承模式
    
            使用原型链实现对原型属性和方法的继承,
            而通过借用构造函数来实现对实例属性的继承
    示例:
        <script>
            function Humans(name){
                this.name=name;
                this.clothing=["trousers","dress","jacket"];
            }
            Humans.prototype.sayName=function(){
                alert(this.name);
            };
            function Man(name,age){
                Humans.call(this,name);    //继承属性
                this.age=age;
            }
            Man.prototype=new Humans();    //继承方法
            Man.prototype.sayAge=function(){
                alert(this.age);
            };

            var man1=new Man("mary",38);
            man1.clothing.push("coat");
            alert(man1.clothing);     //输出"trousers,dress,jacket,coat"
            man1.sayName();            //输出mary
            man1.sayAge();            //输出38
            var man2=new Man("tom",26);
            alert(man2.clothing);    //输出"trousers,dress,jacket"
            man2.sayName();            //输出tom
            man2.sayAge();            //输出26
        </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值