构造函数的继承与,类的继承 、原型链 、call(),apply(),bind()的区别

本文探讨了JavaScript中的构造函数继承、类继承以及原型链的概念。通过call()方法实现属性继承,利用prototype进行方法继承以避免内存浪费。类继承通过extends关键字和super关键字实现,同时强调了super关键字必须在this之前使用。原型链通过prototype对象优化了内存使用,__proto__属性连接了构造函数和实例对象。此外,还区分了call(), apply(), bind()在改变this指向上的不同应用。" 107226043,8344471,格式字符串漏洞攻防实战,"['安全', 'C语言编程', '漏洞利用', '软件安全', '缓冲区溢出']
摘要由CSDN通过智能技术生成

***构造函数继承

属性继承:利用call()方法改变超类型构造函数this指向

  // 属性继承
        function Father(U_name, age, sex) {
            this.U_name = U_name;
            this.age = age;
            this.sex = sex

            console.log(this); //  this指向Son
        }

        function Son(U_name, age, sex) {
            Father.call(this, U_name, age, sex) //改变Father this指向 

        }
        let son = new Son('张三', 18, 'sex')
        console.log(son);

 这时候我们看到打印结果:通过Son构造函数实力出来的对象已经拿到了Father构造函数里的属性

但是这种方式也有一个缺点 就是继承不了超类型构造函数里边的方法;

 function Father(U_name, age, sex) {
            this.U_name = U_name;
            this.age = age;
            this.sex = sex
        }
        Father.prototype.sing = function() {
            console.log('lalalala');
        }

        function Son(U_name, age, sex) {
            Father.call(this, U_name, age, sex)

        }
        let son = new Son('张三', 18, 'sex')
        console.log(son);

 

 那如果要把超类型构造函数里边的方法也继承过来就可以用下边这种方法:

方法继承:利用原型对象prototype继承方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值