美文网首页
javascript对象的继承和object对象

javascript对象的继承和object对象

作者: ssttIsme | 来源:发表于2019-12-18 22:15 被阅读0次

    javascript对象的继承和object对象

    对象的一个类可以从现有的类中派生,并且拥有现有的类的属性或者方法,这个过程叫做继承。
    被继承的类叫做父类或是基类,继承的类叫做子类。
    (一个对象拥有另一个对象的属性和方法)
    优点:提高代码的重用性、可维护性、逻辑性

    一、Object对象

        document.write(Object); //function Object() { [native code] }
        document.write(typeof Object); //function
    
    var obj=new Object();
    

    属性:
    1.constructor:创建对象的函数的引用(指针)。

        var obj=new Object();
        document.write(obj.constructor); // function Object() { [native code] }
    

    2.prototype:对函数对象的对象原型的引用。是函数对象的默认属性。

        var obj=new fun();
        function fun() {
    
        }
        document.write(obj.prototype); //输出 undefined
        document.write(fun.prototype); //输出 [object Object]
    

    A.可将对象的共享属性存放到代码段当中
    B.可以实现继承
    方法:
    A.hasOwnProperty(property)判断对象是否具有某个属性

        var obj=new fun();
        function fun() {
            this.name="属性";
        }
        document.write(obj.hasOwnProperty("name")); //输出 true
    

    B.isPrototypeOf(obj)判断该对象是否是另一个对象的原型。(用来检测对象的类型)

        var arr=new Array();
        document.write(Array.prototype.isPrototypeOf(arr)); //输出 true
    

    C.instanceof运算符

        var arr=new Array();
        document.write(arr instanceof Array); //输出 true
    

    二、继承

    1.原型继承

        function Person() {
            this.name="名字";
            this.say=function(){
              document.write(this.name);
            };
        }
        function Teacher() {
    
        }
        Teacher.prototype=new Person();
        var zhangsan=new Teacher();
        zhangsan.say(); //输出 名字
    

    2.对象冒充的形式继承

    2.1call
    object.function.call(obj2,参数1,参数2...)
    

    让对象1的方法冒充成对象2的方法

        function Person() {
            this.name="名字";
            this.say=function(){
              document.write(this.name);
            };
        }
        function Teacher() {
            this.name="李四";
        }
        var people=new Person();
        var zhangsan=new Teacher();
        people.say.call(zhangsan);
    

    输出 李四

        function Person() {
            this.name="名字";
            this.say=function(){
              document.write(this.name);
            };
        }
        function Teacher() {
           window.Person.call(this);
        }
        var zhangsan=new Teacher();
        document.write(zhangsan.name);
        zhangsan.say();
    

    输出 名字名字

        function Person(name) {
            this.name=name;
            this.say=function(){
              document.write(this.name);
            };
        }
        function Teacher() {
           window.Person.call(this,"老师");
        }
        var zhangsan=new Teacher();
        zhangsan.say();
    

    输出 老师

    2.apply
    object.function.apply(obj2,[参数1],[参数2]...)
    
        function Person(name) {
            this.name=name;
            this.say=function(){
              document.write(this.name);
            };
        }
        function Teacher() {
           window.Person.apply(this,["老师"]);
        }
        var zhangsan=new Teacher();
        zhangsan.say();
    

    输出 老师

    相关文章

      网友评论

          本文标题:javascript对象的继承和object对象

          本文链接:https://www.haomeiwen.com/subject/urdpnctx.html