美文网首页
js对象继承

js对象继承

作者: pretty_rain | 来源:发表于2019-06-19 13:54 被阅读0次

Object对象是顶级父类它的原型中的方法和属性任何对象都可以调用,例如toString就是Object的方法。
继承的三种方式:

1.组合继承

   var Person = function(name,age){
        this.name = name;
        this.age = age;
    }
    Person.prototype = {
        say : function(){
            console.log('Person.prototype - say');
        }
    }
    function Teatcher(name,age,sex){
        this.sex = sex;
        //指向基类构造函数
        Person.call(this,age,sex);
    }
    /*Teatcher.prototype = new Person();
   Teatcher.prototype.constructor = Teatcher;或者*/
    Teatcher.prototype.__proto__ = Person.prototype;
    Teatcher.prototype.giveClass = function(){
        console.log('Teatcher.prototype - giveClass');
    }

    var cher = new Teatcher("老胡",54,"boy");
    cher.say();
    cher.giveClass();
    console.log(cher);
image.png

2.寄生组合继承 把父类的原型赋值给子类的原型

    /*继承的固定函数-父原型赋值给子原型并改变constructor*/
    function inheritPrototype(subType,superType){
        var prototype = superType.prototype;
        prototype.constructor = subType;
        subType.prototype = prototype;
    }

    function Person(name){
        this.name = name;
    }
    Person.prototype = {
        say : function(){
            console.log('Person.prototype - say');
        }
    }

    function Student(name,age){
        Person.call(this,name);
        this.age = age;
    }

    inheritPrototype(Student,Person);
    Student.prototype.giveClass = function(){
        console.log('Teatcher.prototype - giveClass');
    }

    var xiaozhang = new Student('小张',20);
    console.log(xiaozhang.name);
    xiaozhang.say();
    xiaozhang.giveClass();
    console.log(xiaozhang);
image.png

3.拷贝继承 把父类的属性和方法拷贝给子类

    var Chinese = {nation:'中国'};
    var Doctor ={career:'医生'}

//    请问怎样才能让"医生"去继承"中国人",也就是说,我怎样才能生成一个"中国医生"的对象?
//    这里要注意,这两个对象都是普通对象,不是构造函数,无法使用构造函数方法实现"继承"。
    function extend(p) {
        var c = {};
        for (var i in p) {      
            c[i] = p[i];    
        }
        c.uber = p;
        return c;
    }

    var Doctor = extend(Chinese);
    Doctor.career = '医生';
    alert(Doctor.nation); // 中国

相关文章

  • JS汇总---面向对象&数组

    面向对象 js原型链的继承 静态属性怎么继承 js原型链以及特点 面向对象有哪几个特点 封装,继承,多态 对象的继...

  • js对象的三种继承方式

    js对象的三种继承方式转载 2017年06月23日 15:07:56 13300一,js中对象继承对象的js中有三...

  • JS中继承的实现

    JS中继承的实现 #prototype (js原型(prototype)实现继承) 全局的Function对象没有...

  • JS对象和继承

    JS对象和继承 JS是个无类的语言,因此对于对象构造器(类)和对象的继承就值得我们研究了。本文讲述JS中构造器的表...

  • js 对象继承

  • js 对象继承

    内容来自《JavaScript高级程序设计》第三版第6章第3节 原型链 ECMAScript中描述了 原型链的概念...

  • js 对象继承

    js变量可分为两部分,基本类型和引用类型。 基本类型:基本类型比较简单,包括Undefined,Null,Bool...

  • js对象继承

    Object对象是顶级父类它的原型中的方法和属性任何对象都可以调用,例如toString就是Object的方法。继...

  • #js继承

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承)类式继承(构造函数间的继承) 类式继承是...

  • JavaScript 10

    js继承的概念 1.通过原型链方式实现继承(对象间的继承) 2.类式继承(构造函数间的继承) 由于js不像Java...

网友评论

      本文标题:js对象继承

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