0
点赞
收藏
分享

微信扫一扫

js箭头函数

箭头函数中 this 的行为与常规函数的 this 行为有很大不同。

无论如何执行或在何处执行,箭头函数内部的 this 值始终等于外部函数的 this 值。

换句话说,箭头函数可按词法解析 this,箭头函数没有定义自己的执行上下文。

(1). 格式:参数 => 表达式/语句

let a = b => b *2;
let a = b => {
   return b * 3;   // 加了大括号,就需要return,否则值不会返回
}

(2). 继承外层作用域,没有独立作用域.

var obj = {
   aFn: function() {
      console.log(this);    // this指向的是它的调用者(obj.aFn()),即obj对象
   },
   bFn: () => {
      console.log(this);    // 这个函数是没有作用域的,与obj是共享一个作用域的,所以指向obj所在的作用域window
   }
}
obj.aFn();   // {aFn: ƒ, bFn: ƒ},输出obj本身
obj.bFn();   // Window {parent: Window, opener: null, top: Window, length: 11, frames: Window, …},输出window作用域

(3). 不能用作构造函数.

let Test = function() {}
let test = new Test();
console.log(test)    // Animal {}

let Test = () => {}
let test = new Test();   // Uncaught TypeError: Animal is not a constructor

(4). 没有prototype属性.

let aFn = function(){};
let b = () => {};
console.log(aFn.prototype);   // {constructor: ƒ},指向了构建函数
console.log(b.prototype);     // undefined

举报

相关推荐

0 条评论