zoukankan      html  css  js  c++  java
  • javaScript之继承

    继承方法

    原型链继承

    继承是通过创建构造函数的实例实现的,孩子的prototype属性等于父亲构造函数的实例,这样孩子原型对象的prototype属性指向父亲的原型对象。由此原来存在于父亲的实例中的所有属性和方法,现在也存在于孩子的原型对象中了,这样就建立了继承关系。

    借用构造函数

    使用call()或apply()方法在将来新创建的对象上执行构造函数。

    组合继承

    原型链实现对原型属性和方法的继承,构造函数实现对实例属性的继承。

    function parent(age,name){
    
    this.age=age;
    
    this.name=name;
    
    }
    
    parent.prototype.say =function(){
    
    alert(this.name)
    
    };
    
    function child(age,name){
    
        //构造函数继承
    
    parent.call(this.age,name);
    
    }
    
    //原型继承
    
    var child.prototype=new parent(“LIli”,”13”);
    
    child.prototype.constructor= child;

    原型式继承

    创建一个临时构造函数(obj),将传入的父亲对象(o)作为构造函数的原型,然后返回这个临时构造函数的一个新实例。孩子作为临时构造函数的实例,由此实现了给定父亲对象的浅复制,而复制得到的孩子副本可以实现进一步的改造。

    var obj(o){
    
    function F(){}
    
    F.prototype=o;
    
    return new F();
    
    }
    
    var parent = {name:”Li”};
    
    var child = obj(parent);
    
    Child.age=”23”;

    寄生式继承

    创建一个封装过程的函数,将原型式继承和增强对象的内容全部封装到函数中,通过调用封装函数实现继承。

    function createChild(parent){
    
    var tempChild = obj(parent);
    
    tempChild.say = function(){
    
    alert(this.name);
    
    }
    
    return tempChild
    
    }
    
    var child = creatChild(perent);

    组合继承

    是实现基于类型继承的最好方法。组合继承在每个孩子实现继承过程时都需要两次调用父亲超类型,一次是在孩子构造函数内部,另一个是创建孩子原型的时候。组合继承是将孩子在创建原型时进行封装,这样任何一个孩子只需要在创建构造函数时调用父亲构造函数。

    function inherentPrototype (child,parent){
    
    var prototype= new Obj(parent.prototype);
    
    prototype.prototype = prototype;
    
    child.constructor = prototype;
    
    }
    
    function parent(age,name){
    
    this.age=age;
    
    this.name=name;
    
    }
    
    parent.prototype.say =function(){
    
    alert(this.name)
    
    };
    
    function child(age,name){
    
        //构造函数继承
    
    parent.call(this.age,name);
    
    }
    
    //原型继承
    
    inherentPrototype (child,parent);
  • 相关阅读:
    带你进入异步Django+Vue的世界
    xps转换为pdf
    当对函数的返回值有多种需求时(执行是否成功,及业务数据的返回值),可采用的方法
    WPF 打印崩溃问题( 异常:Illegal characters in path/路径中有非法字符)
    集群、限流、缓存 BAT 大厂无非也就是这么做
    C#简单爬取数据(.NET使用HTML解析器ESoup和正则两种方式匹配数据)
    公共静态函数、属性 的 “关联成员” 的 生命周期
    python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)
    Django文档
    go micro 微服务框架温习
  • 原文地址:https://www.cnblogs.com/microcosm/p/6980190.html
Copyright © 2011-2022 走看看