zoukankan      html  css  js  c++  java
  • javascript原型,继承

    //普通对象
    //函数对象(有原型 prototy 的属性)
    //原型的应用 继承
    function Amial(){
        this.type = '小于'
    }
    function cat(name){
        this.name = name
    }
    cat.prototype = new Amial()
    var cat1 = new cat('小张')
    console.log(cat1.name,cat1.type)
    
    //构造器  继承 缺点:把父元素的属性都复制了
    function Amial(){
        this.type = '动物'
    }
    function amm(name){
        Amial.apply(this) //调用Amial构造器 Amial == amm
        //Amial.call(this,x,y,z)  Amial.apply(this,[x,y,z])
        this.name = name
    }
    var a = new amm('张三')
    console.log(a.type)
    
    //组合继承(原型+构造器) 缺点:调用两次父类构造器
    
    function Preson(name){
        this.arr = ['js','php']
        this.name = name
    }
    Preson.prototype.showname = function(){
        console.log(this.name)
    }
    function teacher(name,gread){
        Preson.call(this,name)
        this.gread = gread
    }
    teacher.prototype = new Preson() // 最关键的一句
    var a = new teacher('xiaoming', 23)
    console.log(a.arr,a.name,a.gread)
    a.showname()
    
    //原型+构造+寄生
    function father(name){
        this.arr = ['aa','bb']
        this.name = name
    }
    father.prototype.showname = function(){
       console.log(this.name)
    }
    function son(name,course){
       father.call(this,name)
       this.course = course
    }
    function extend(subobj,superobj){
       var proobj = Object.create(superobj.prototype)
       subobj.prototype = proobj
    }
    extend(son, father)
    var a = new son('xiaoming', 23)
    console.log(a.arr,a.name,a.course)
    a.showname()
  • 相关阅读:
    组合模式
    备忘录模式
    适配器模式
    状态模式
    观察者模式
    建造者模式
    地图染色-四色定理
    c++传递函数当作对象传递
    位向量实现集合—王晓东数据结构
    动态规划之最大连续子序列
  • 原文地址:https://www.cnblogs.com/carry-carry/p/11635007.html
Copyright © 2011-2022 走看看