JavaScript学习总结笔记之call、apply、继承

前言
JavaScript总结笔记篇仅是记载本人学习过程中的一些总结,为了梳理一下知识点,督促自己不断加强学习。文中有些是源自官网,有些是搜集资料,有些是个人观点,难免存在某些知识点疏漏或者是有错误的地方,如果错误之处,希望看到的小伙伴能及时提个醒,避免误导其他小伙伴,也希望我的总结能帮助到正在学或者是将要学习JavaScript的小伙伴们!大家一起努力,早日成为IT界的大神!

一、call/apply

(一)作用:改变this指向
(二)区别:传参列表不同
call:需要把实参按照形参的个数传进去

apply:需要传一个arguments

     function Person (name, age) {
         this.name = name;
         this.age = age;
     }

     var person = new Person( "xu", 18);
     var obj = {

     }
     Person.call(obj, "linw", 8);
     //控制台输出obj ——> name:"linw", age:8
     

二、继承发展史

(一)原型链继承
缺点:过多的继承了没用的属性
       
        Grand.prototype.lastName = "xu";
        function Grand () {
            
        }

        var grand = new Grand();

        Father.prototype = grand;
        function Father () {

        }
        
        var father = new Father();
        
        Son.prototype = father;
        function Son () {
            
        }
            
        var son = new Son();
        
(二)借用构造函数
1.不能继承借用构造函数的原型
2.每次构造函数都要多走一个函数
        function Person(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }

        function Student(name, age, sex, grade) {
            //var this = Object.create(Student.prototype);
            Person.call(this, name, age, sex);
            this.grade = grade;
        }

        var student = new Student();
(三)共享原型
缺点:不能随便改动自己的原型
        Father.prototype.name = "lw";
        function Father() {

        }

        function Son() {

        }

        function inherit(Target, Origin) {
            Target.prototype = Origin.prototype;
        }

        inherit(Son, Father);
        var father = new Father();
        var son = new Son();

(四)圣杯模式 很重要
//圣杯模式
function inherit(target,origin){
function F(){};
F.prototype = origin.prototype;
target.prototype = new F();
target.prototype.constructor = target;
//原型上都有一个属性(constructor),指向他的构造函数
target.prototype.uber = origin.prototype
}//看origin究竟继承自谁,super是关键字,用
uber代替,表示超类
Father.prototype.lastName = 'xu';
function Father(){};
function Son(){};

inherit(son,father);
var father = new Father();
var son = new Son();

文章持续更新中,敬请关注,谢谢阅读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值