zoukankan      html  css  js  c++  java
  • 继承

    函数是特定环境中执行代码的对象,使用apply()和call()方法可以在新创建的对象上执行构造函数,如下
    function Box(name,age) {
                this.name = name;
                this.age = age;
    
    
            }
    
            function Desk(name, age){
                Box.call(this, name, age); //this是Desk本身,对象冒充,只能继承构造函数里面的信息,原型里面的无法继承
            }
            var desk = new Desk('Lee', 100);
            alert(desk.name);//Lee
    

      

    function Box(name,age) {
                this.name = name;
                this.age = age;
    
    
            }
            Box.prototype.family = '家庭';
            function Desk(name, age){
                Box.call(this, name, age); //this是Desk本身,对象冒充,只能继承构造函数里面的信息,原型里面的无法继承
            }
            var desk = new Desk('Lee', 100);
            alert(desk.name);//Lee
            alert(desk.family);//undefined
    

      

    function Box(name,age) {
                this.name = name;
                this.age = age;
                this.family = ['哥哥','姐姐','弟弟'];//引用类型放在构造函数不被共享
    
            }
            Box.prototype.family = '家庭';
            function Desk(name, age){
                Box.call(this, name, age); //this是Desk本身,对象冒充,只能继承构造函数里面的信息,原型里面的无法继承
            }
    
            var desk = new Desk('Lee', 100);
            alert(desk.name);//Lee
            desk.family.push('妹妹');
            alert(desk.family);//哥哥姐姐弟弟妹妹
            var desk2 = new Desk('Jack', 200);
            alert(desk2.family);//哥哥姐姐弟弟
    

      

    function Box(name,age) {
                this.name = name;
                this.age = age;
                this.family = ['哥哥','姐姐','弟弟'];//引用类型放在构造函数不被共享
    
    
            }
            //构造函数里的方法,放在构造里,每次实例化,都会分配一个内存地址,浪费,所以放在原型函数里
            Box.prototype.run = function () {
                return this.name + this.age;
            };
            Box.prototype.family = '家庭';
            function Desk(name, age){
                Box.call(this, name, age); //this是Desk本身,对象冒充,只能继承构造函数里面的信息,原型里面的无法继承
            }
    
            var desk = new Desk('Lee', 100);
            alert(desk.run());//undefined 继承不到prototype中,使用组合继承,如下
    

      

    //组合继承
     function Box(name,age) {
                this.name = name;
                this.age = age;
                this.family = ['哥哥','姐姐','弟弟'];//引用类型放在构造函数不被共享
    
    
            }
            //构造函数里的方法,放在构造里,每次实例化,都会分配一个内存地址,浪费,所以放在原型函数里
            Box.prototype.run = function () {
                return this.name + this.age;
            };
            Box.prototype.family = '家庭';
            function Desk(name, age){
                Box.call(this, name, age); //this是Desk本身,对象冒充,只能继承构造函数里面的信息,原型里面的无法继承
            }
            Desk.prototype = new Box(); //原型链继承
            var desk = new Desk('Lee', 100);
            alert(desk.run());//Lee100
    

      

  • 相关阅读:
    PHP入门(二)
    PHP入门(一)
    TypeScript作为前端开发你必须学习的技能(三)
    东北师范大学-构建之法-20201022作业成绩
    20201108-东北师范大学-助教-周总结-第8次
    20201103-东北师范大学-助教-周总结-第7次
    东北师范大学-构建之法-20201015作业成绩
    20201026-东北师范大学-助教-周总结-第6次
    东北师范大学-构建之法-20201008作业成绩
    20201019-东北师范大学-助教-周总结-第5次
  • 原文地址:https://www.cnblogs.com/shenq/p/5473831.html
Copyright © 2011-2022 走看看