有关箭头函数

前言

  在react开发中,经常使用bind(this),来将函数绑定上下文,后来使用了箭头函数,就不需要使用bind(this)了。在非箭头函数下, this 指向调用其所在函数的对象,而且是离谁近就是指向谁(此对于常规对象,原型链, getter & setter等都适用);构造函数下,this与被创建的新对象绑定;DOM事件,this指向触发事件的元素;内联事件分两种情况,bind绑定, call & apply 方法等, 容以下一步一步讨论。箭头函数也会穿插其中进行讨论。关于this指针的问题可以看下这里

bind 方法

bind方法在ES5引入, 在Function的原型链上,  Function.prototype.bind 。通过bind方法绑定后, 函数将被永远绑定在其第一个参数对象上, 而无论其在什么情况下被调用。

1 function f(){
2   return this.a;
3 }
4
5 var g = f.bind({a:"azerty"});
6 console.log(g()); // azerty
7
8 var o = {a:37, f:f, g:g};
9 console.log(o.f(), o.g()); // 37, azerty

箭头函数中的 this

箭头函数this指针是在定义的时候绑定的,不管在什么上下文环境中,他的指向是其定义时的指向。而普通的函数this指针是在运行的时候进行绑定的,它的指向为当前上下文环境因此是不确定的。



原文地址:https://www.cnblogs.com/lidedong/p/9575788.html

时间: 2024-11-02 17:49:53

有关箭头函数的相关文章

JS中generater和箭头函数

generater跟函数很像: function* fn(x){ yield x; yield x++; return x;} 如上所示,generater用function*定义,可以用yield返回多次,也可以使用return返回; 调用generater有两个方法,一是一直调用generater的next()方法: console.log(fn.next()); console.log(fn.next()); console.log(fn.next()); 直到fn.next()返回tru

es6箭头函数

1.先来看看es6对函数做了什么:默认值! function add(a=1,b=2) {//默认值 console.log(a+b) } add(5,6); let a=0; if(a==0){ // throw new Error('错误')//手动报错 } //console.log(add.length)//如果给了默认值,那就不计算在必要参数里,也就是得到0了 //好奇的朋友可以打开注释试一试,这个默认参数和必要参数不一样哦,不给默认值的为必要参数,是你必须要传入的,给了默认值的就不用

ES6的箭头函数详解:

箭头函数是ES6中新增一个函数表达形式,它是对函数的一种简化ES6允许使用"箭头"(=>)定义函数. Eg: var f = v => v; 等同于之前 var f = function(v) { return v; }; const Even = n => n % 2 == 0; const Square = n => n * n; 注: 箭头函数就是省略了function 参数集与函数体之间一定要有一个箭头=> 对于参数集而言: 零个参数用 () 表示

箭头函数

在ES6以前我们用 function 来定义函数,还记得楼主刚学js那会儿老是把function写错 (╯‵□′)╯︵┻━┻,但是自从ES6中出现了箭头函数以后,妈妈再也不担心我写成 fnuction了,那么我们下面开始正式学习! 基本语法: ES6允许使用"箭头"(=>)定义函数. let func = (num) => num; 上面的箭头函数等同于: let func = function (num) { return num; } 小伙伴们发现了什么?没错, ES6

ES6新特性(函数默认参数,箭头函数)

ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者false时,会直接取到后面的值,而不是传入的这个参数值. 那怎么解决呢?对于上图的代码,可以通过判断是否传入了num参数,没有就用默认值:   这种做法还是很麻烦的,而ES6则直接在参数定义里面设置函数参数的默认值,而且不用担心传入参数是0或者false会出错了: 2.箭头函数 箭头函数用 =>

箭头函数无法使用this的解决方法

ES6中箭头函数  () => { }  ,看到这么简单的写法,我也是很喜欢用的.但是如果想在箭头函数里面使用this,那么就会出现获取不到当前对象,而是获取到window对象. 下面这个是ES5中原型链上添加了一个say函数,在函数内打印出this对象,运行后能够得到正确    Person {name: "小米", age: 7} <!DOCTYPE html> <html lang="en"> <head> <m

ES6中的箭头函数

箭头函数内部没有constructor方法,也没有prototype,所以不支持new操作.但是它对this的处理与一般的普通函数不一样.箭头函数的 this 始终指向函数定义时的 this,而非执行时.我们通过一个例子来理解: var o = { x : 1, func : function() { console.log(this.x) }, test : function() { setTimeout(function() { this.func(); }, 100); } }; o.te

ES6 =&gt; 箭头函数

箭头函数ES6一个非常有用的新特性,我这里小小的总结一下用法: 箭头函数相当于直接return一个值,当没有参数时,可以这么写: var f = () => 0; // 上面这句话相当于 var f = function(){ return 0;} 当有一个参数时: var f = num => return num; // 上面这一句相当于 var f = function(num) { return num;} 当有两个或以上的参数时,要用括号并用逗号分隔开: var f = (a,b)

ES6新增—新增循环、箭头函数

5.新增循环: 以前for循环,for in循环 ES6新增循环: for of 循环:遍历(迭代,循环)整个对象,变现类似于for in 循环 两者的区别: for in循环:既可以循环数组,又可以循环json 循环数组:i代表数组的索引 var arr1=['apple','banana','appel','orange']; for(var i in arr1){ console.log(i); //0,1,2,3 } 循环json:name代表json的索引 var json=[a:'a

【转载】ES6——箭头函数

转载自:https://segmentfault.com/a/1190000004470909 侵删! 箭头函数 定义 定义一个箭头函数很简单,基本语法是: ([param] [, param]) => { statements } param => expression param 是参数,根据参数个数不同,分这几种情况:() => { ... } // 零个参数用 () 表示:x => { ... } // 一个参数可以省略 ():(x, y) => { ... } //