辉太郎看前端(构造函数与箭头函数的区别)

前言
  1. 是否能够使用new关键字
  2. 是否存在内置对象arguments
  3. 两者this指向不同
  4. 是否能够通过call()apply()bind()方法改变this指向。
  5. 是否存在原型。
是否能够使用new关键字
  • 构造函数能够使用new关键字定义函数
  • 箭头函数是匿名函数,不能使用new关键字定义函数
是否存在内置对象arguments
  • 构造函数中存在内置对象arguments,展示上类似于数组。
  • 箭头函数中不存在arguments,可以用...变量名代替。
this的指向
  • 构造函数中的this谁调用就指向谁。
  • 箭头函数中的this始终指向父级的上下文(取决于定义的位置,和使用的位置没有多大关系)
var a=20;
 let obj2 = {
         a: 10,
         b: function (n) {
             let f = (n) => n + this.a; //谁调用就指向谁
             return f(n);
         },
         c: (n)=> {
            return n+this.a;  //this指向父级的上下文
         }
     };
     console.log(obj2.b(1));  // 11
     console.log(obj2.c(1));  //21 
是否通过call(),apply()bind()改变this指向
  • 构造函数 可以改变this指向
  • 箭头函数 不能改变this指向,会过滤掉第一参数,直接执行第二参数
let obj2 = {
        a: 10,
        b: function (n) {
            let f = (n) => n + this.a;
            return f(n);
        },
        c: function (n) {
            let f = (n) => n + this.a;
            let m = {
                a: 20
            };
            return f.call(m, n); 
            //f函数为箭头函数无法改变this指向
        }
    };
    console.log(obj2.b(1));  // 11
    console.log(obj2.c(1));  // 11
是否拥有原型
  • 构造函数拥有原型。
  • 箭头函数没有原型对象。
总结

初出茅庐,多多指教。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值