zoukankan      html  css  js  c++  java
  • ES5 继承实现

    • 1、对象冒充
      • 缺点:无法调用原型链方法
    • 2、原型链
      • 缺点:无法调用父类构造方法
    • 3、对象+原型链组合
      • 解决对象冒充 和 原型链缺点
        // es5 继承
        // es5中继承主要2种方式:
            // 1、对象冒充
            // 2、原型链
        
        // 定义类
        function person(name, age){
            this.name = name;
            this.age = age
            
            this.run = function(){
                console.log(name + '跑步');
            }
        }
        // 原型链挂载方法
        // 多个实例共享原型链的方法
        person.prototype.work = function(){
            console.log(this.name + '工作');
        }
        
        var p = new person('张三', 20);
        p.run();
        p.work();
        
        var pp = new person('张三丰', 33);
        pp.run();
        pp.work();
        
        // 1、对象冒充方式
        // 缺点:无法调用原型链方法
        function people(name, age){
            person.call(this, name, age)
        }
        var p1 = new people('李四',30);
        p1.run();
        // p1.work(); // p1.work is not a function 无法调用原型链数据
        
        // 2、原型链实现继承
        // 原型链缺点,无法调用父类构造方法
        function people2(name, age){
        
        }
        people2.prototype.work = person.prototype.work
        var p2 = new people2('王五', 30);
        p2.work(); // undefined工作,原型链缺点,无法调用父类构造方法
        
        // 3、对象 + 原型链实现继承
        function people3(name, age){
            // 对象冒充
            person.call(this, name, age);
        }
        // 原型链
        people3.prototype = person.prototype;
        var p3 = new people3('赵六', 40);
        p3.run();
        p3.work();
  • 相关阅读:
    蓝桥杯Java真题解析
    第十届蓝桥杯JavaB组总结
    Java框架相关
    认识JDBC
    Lua中 MinXmlHttpRequest如何发送post方式数据
    ios 的EditBox点击空白处不隐藏的解决方案
    AssetsManager 在ios更新失败解决方案
    Cocos Studio编辑器运行日志路径
    华为 进入和退出Fastboot、eRecovery和Recovery升级模式
    cocos lua 加密方案
  • 原文地址:https://www.cnblogs.com/zhengyulu/p/12078467.html
Copyright © 2011-2022 走看看