关于箭头函数的this指向问题】的更多相关文章

项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2.箭头函数及this指向 3.promise. 4.async await语法 4.模块化 module export和import 5.解构赋值.字符串模板 …… 箭头函数 顾名思义 用箭头 “ => ” 定义函数 //es5的函数 var fn = function(num) { return n…
es6的箭头函数中this指向是跟普通function中的this指向不同的,普通function的this指向取决于调用function的对象, 而箭头函数的this指向取决于声明它的对象,看下面这个例子   var a1 = 1;             function func1(){                 this.a1 = 2;                 console.log(this.a1);             }             var func2…
OK,对于箭头函数的this 用一句话概括:箭头函数中的this指向的是定义时的this,而不是执行时的this. 如果上面这句话听的是懂非懂或者完全不懂的,没关系,下面会有案例讲解. 举个栗子 来看看this的一个使用案例: //定义一个对象 var obj = { x:100, //属性x show(){ //延迟500毫秒,输出x的值 setTimeout( //匿名函数 function(){console.log(this.x);}, 500 ); } }; obj.show();//…
箭头函数(=>):函数简写 无参数:() => {} 单个参数:x => {} 多个参数:(x, y) => {} 解构参数:({x, y}) => {} 嵌套使用:部署管道机制 this指向固定化 并非因为内部有绑定this的机制,而是根本没有自己的this,导致内部的this就是外层代码块的this 因为没有this,因此不能用作构造函数 箭头函数误区 函数体内的this是定义时所在的对象而不是使用时所在的对象 可让this指向固定化,这种特性很有利于封装回调函数 不可当…
this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this.正是因为它没有this,所以也就不能用作构造函数. 箭头函数转成ES5的代码如下. function foo() { setTimeout(() => { console.log('id:', this.id); }, 100); } // ES5 function foo() { var _this = this; setTimeout(fun…
一.定义函数的方式 //1.function const aaa = function () { } //2.对象字面量中定义函数 const obj = { bbb() { } } //3.ES6中的箭头函数 const ccc = (参数) => { } 二.箭头函数的参数和返回值 1.参数问题 //1.1两个参数 const sum = (num1, num2) => { return num1 + num2 } //1.2一个参数(括号可以省略) const power = num =…
一.ES6箭头函数 ES6之前的语法想要定义一个函数,如图example1,ES6之后定义一个函数如图example2,相比较之下简洁了很多 二.函数的this指向 非箭头函数,谁调用函数this指向谁,如下图所示 箭头函数本身没有this和arguments,它的this和aguments为父级元素的this和arguments…
let let允许你声明一个作用域被限制在块级中的变量.语句或者表达式. 还是那个经典的问题:创建5个li,点击不同的li能够打印出当前li的序号. 如果在for循环中使用**var**来声明变量i的话,将总是打印出 Item 5 is Clicked 使用let的方式来解决 var liList = document.querySelectorAll('li') // 共5个lifor( let i=0; i<liList.length; i++){  liList[i].onclick =…
document.onclick = function(){ // 普通函数的this是在运行的时候才临时绑定的,也就是说,函数不运行,你绝对不可能知道this是谁 // 下面这个函数如果是自调用,this就是window,比如情况1 // 如果是被别的对象调用的,this就是调用他的那个对象 比如情况2 function fn1(){ console.log(this) } // 情况1: fn1(); // 情况2: button.onclick = fn1(); // 箭头函数的this在…
箭头函数的this 什么是箭头函数,箭头函数是es6的新特性,其出现就是为了更好的表示(代替)回调函数 // 箭头函数 (arg1, arg2) => {} // 当箭头函数只有一个参数 arg1 => console.log(arg1) // 箭头函数隐式return arg1 => arg1 // 等价于 arg1 => return arg1 箭头函数的this不同于以上所有情况(不是在代码执行时确定),而是在箭头函数定义时确定的(类似于作用域),箭头函数的this就是其定义…