首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
ES6之箭头函数中的this
】的更多相关文章
ES6之箭头函数中的this
在讲箭头函数中的this之前我们先介绍一下普通函数中的this. 普通函数中的this: (1)this指向它的直接调用者 (2)默认的,非严格模式下,没找到直接调用者则指向window (3)严格模式下,没直接调用者的this是undefined (4)使用call,apply,bind绑定对象,则this指向被绑定的对象. ES5中 window.val = 1; var obj = { val: 2, dbl: function () { this.val *= 2; val *…
ES6 箭头函数中的 this?你可能想多了(翻译)
箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. 箭头函数的句法规则甚至早已延伸到各项标准和技术文档中去了,虽然它早已不稀奇,却给我们一种刚刚发现的新鲜感. 粉我的人都知道俺因为某些原因不怎么喜欢 => 的语法,不过别担心,本文并非讲述我为何不喜欢它,如果你对这个观点感兴趣,可以查看我<YDKJS:ES6 & Beyonf>一书…
es6箭头函数中this
普通函数: $scope.$on('$stateChangeSuccess',function(){this.list = this.getList();}); 箭头函数: $scope.$on('$stateChangeSuccess',()=>{this.list = this.getList();}); 上面的代码是在es6中class的constructor体中的语句.函数的作用是调用该模块中的getList函数,将函数的返回值赋值给class中的list值.从写法上来看两种不同的写法表…
深入理解ES6箭头函数中的this
简要介绍:箭头函数中的this,指向与一般function定义的函数不同,比较容易绕晕,箭头函数this的定义:箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定. 1.何为定义时绑定 我们来看下面这个例子: (1) var x=11; var obj={ x:22, say:function(){ console.log(this.x) } } obj.say(); //console.log输出的是22 一般的定义函数跟我们的理解是一样的,运行的时候决定this的指向,我…
js中的this和箭头函数中的this
一.ES6 允许使用"箭头"(=>)定义函数. // var f = v => v;// 上面的箭头函数等同于: // var f = function(v) {// return v;// };// 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分.如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回. // 由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错. 箭头函…
进阶路上有你我-相互相持篇之ES6里箭头函数里的this指向问题
首先复习下普通函数里的this指向: function test(){ console.log(this) } test() 你会秒杀的毫无疑问的回答:window,针对普通函数:谁调用了函数 函数里的this就指向谁,test()等价于window.test(),所以是window var name="outername" var o={ name:"innername", getname:function(){ console.log(this.name) }…
ES6学习--箭头函数
1. 箭头函数基本形式 let func = (num) => num; let func = () => num; let sum = (num1,num2) => num1 + num2; [1,2,3].map(x => x * x); 2. 箭头函数基本特点 (1). 箭头函数this为父作用域的this,不是调用时的this 箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind.普通函数的this指向调用它的那个对象. let pe…
箭头函数中的this和普通函数中的this对比
ES6中新增了箭头函数这种语法,箭头函数以其简洁性和方便获取this的特性.下面来总结一下他们之间的区别: 普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, 在严格模式下,没有直接调用者的函数中的this是 undefined使用 call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 箭头函数中的this: 箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),…
初步探究ES6之箭头函数
今天要介绍的是ES6中的箭头函数. 语法 我们先来看看箭头函数的语法: ([param] [, param]) => { statements } param => expression 1 2 3 4 5 6 1 2 3 4 5 6 param 是参数,根据参数个数不同,分这几种情况: () => { … } // 零个参数用 () 表示: x => { … } // 一个参数可以省略 (): (x, y) => { … } // 多参数不能省略 (): 示例 我们再来看看…
JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?
<JavaScript 深入浅出>系列: JavaScript 深入浅出第 1 课:箭头函数中的 this 究竟是什么鬼? JavaScript 深入浅出第 2 课:函数是一等公民是什么意思呢? 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () { console.log("Hello, Fundebug!"); } 箭头函数指的是用=>定义的函数: var hello = () => { cons…
箭头函数中的this
箭头函数中的this 箭头函数根据外层(函数或者全局)作用域来决定this 这样this就像其他面向对象的语言,在哪里定义就指向哪里 function foo() { return (x) => { console.log(this); } } var obj1 = { x: 1 }; var obj2 = { x: 2 }; var bar = foo.call(obj1); bar(); //=> { x: 1 } bar.call(obj2); //=> { x: 1 } foo(…
es6的箭头函数和es5的function函数区别
一.es6的箭头函数es6箭头函数内部没有this,使用时会上朔寻找最近的this不可以做构造函数,不能使用new命令,因为没有this函数体内没有arguments,可以使用rest参数代替不能用yield,不能使用generator函数二.疑问下面代码中的箭头函数arrows的this指向window let obj = { aaa: '123', arrows : () => { console.log('arrows',this); }, func : function () { con…
es6使用箭头函数需要注意的问题
this问题 箭头函数没有它自己的this值,箭头函数内的this值继承自外围作用域,谁定义的函数,this指向谁 箭头函数要实现类似纯函数的效果,必须剔除外部状态.所以箭头函数不具备普通函数里常见的 this.arguments 等,当然也就不能用 call().apply().bind() 去改变 this 的指向 对于箭头函数来说,并没有自己的 this ,它的 this 将始终指向让它生效的对象,即它的外部调用者: const obj1 = { arrowFunc: () => { co…
ES6扩展——箭头函数
1.箭头函数 在es6中,单一参数的单行箭头函数语法结构可以总结如下: const 函数名 = 传入的参数 => 函数返回的内容,因此针对于 const pop = arr => arr.pop(),其中 pop是函数名, arr是传的参数 , =>之后的内容是函数返回的内容,该函数相当于: var pop = function(arr){ arr.pop()} //箭头函数 const add1 = (a,b) => a+b; console.log(add1(2,2));…
普通函数跟箭头函数中this的指向问题
箭头函数和普通函数的区别如下. 普通函数:根据调用我的人(谁调用我,我的this就指向谁) 箭头函数:根据所在的环境(我再哪个环境中,this就指向谁) 一针见血式总结: 普通函数中的this: 1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj 2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window (常见的window的属性和方法有: alert, lo…
区别ES3ES5和ES6this的指向问题。区分普通函数和箭头函数中this的指向问题
ES3 ES5this的指向问题 this指的是该函数被调用的对象 var foo = function () { this.a = 'a', this.b = 'b', this.c = { a: 'new a', b: function () { //new a 此时this指的是该函数被调用的对象 return this.a; } } } console.log(new foo().c.b()); //new a ES6的箭头函数 箭头函数的this指的是定义时this的指向,b在定义时,…
ES6之箭头函数深入理解
相对于普通函数的区别 新的书写方式 this 的改变 不能当构造函数 没有 prototype 属性 没有 arguments 对象 新的书写方式 书写方式很简单!直接看下图, 常规方式写一个函数 const fun = function(number){ return number * 2 } 使用箭头函数 const fun = (number) => { return number * 2 } 如果只有一个参数,还可以省略前面的小括号 const fun = number =>…
ES6,箭头函数 (=>)注意点
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误. 不可以使用arguments对象,该对象在函数体内不存在.如果要用,可以用 rest 参数代替. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数. 上面四点中,第一点尤其值得注意.this对象的指向是可变的,但是在箭头函数中,它是固定的. var id = 21; function foo() { setTimeout(fun…
js 从两道面试题加深理解闭包与箭头函数中的this
壹 ❀ 引 在本文之前我已经花了两个篇幅专门介绍了JavaScript中的闭包与this,正好今早地铁上看到了两道面试题,试着做了下发现挺有意思,所以想单独写一篇文章来记录解析过程.若你对于闭包与this有所了解,不妨先看自己的理解是否正确,若你对于这部分知识欠缺,还是建议先阅读我前面的两篇文章,链接在下: 一篇文章看懂JS闭包,都要2020年了,你怎么能还不懂闭包? js 五种绑定彻底弄懂this,默认绑定.隐式绑定.显式绑定.new绑定.箭头函数绑定详解 那么本文开始. 贰 ❀ 题一 /…
JavaScript箭头函数中的this详解
前言 箭头函数极大地简化了this的取值规则. 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () { console.log("Hello, Fundebug!"); } 箭头函数指的是用=>定义的函数: var hello = () => { console.log("Hello, Fundebug!"); } JavaScript箭头函数与普通函数不只是写法上的区别,它们还有一些微妙的不…
箭头函数中可改变this作用域,回调函数用箭头函数this指向page,自定义事件用箭头函数this指向undefined
1.回调函数中,用箭头函数改变this的作用域 success: (res)=>{ this.setData({ //此时,this指向page页面 ... }) } 2.自定义事件中,如果使用箭头函数,则箭头函数中的this指向undefined,不指向page onLike: (event)=>{ likeModel.like(this.data.classic.id) //报错,this指向undefined }, 需要修改成传统函数形式 onLike: function(event){…
ES6 学习 -- 箭头函数(=>)
(1).只有一个参数且只有一句表达式语句的,函数表达式的花括号可以不写let test = a => a; // 只有一个参数a,这里的表达式相当于 "return a" (2).如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分.let getData = () => { 表达式语句... } // 没有任何参数 let getInit = (name, date) => { 表达式语句... } // 两个及以上参数 (3).返回值为一个对象时,需…
箭头函数中this指向问题
// 问题:箭头函数中的this是如何查找的? // 答案:向外层作用域中,一层层查找this,直到有this的定义…
Es6 之箭头函数 初学
不积跬步,无以至千里;不积小流,无以成江海! // ES5 var selected = allJobs.filter(function (job) { return job.isSelected(); }); // ES6 var selected = allJobs.filter(job => job.isSelected()); 当你只需要一个只有一个参数的简单函数时,可以使用新标准中的箭头函数,它的语法非常简单:标识符=>表达式.你无需输入 function 和 return,一些小括…
ES6笔记② 箭头函数
特性介绍 箭头函数是ES6新增的特性之一,它为JS这门语言提供了一种全新的书写函数的语法. //ES5 function fun(x,y){ return x+y; } console.log(fun(5,10));//15 //ES6 var fun6 = (x,y) => {return x+y;} console.log(fun6(6,10)); ES6简化了声明函数,不需要再写 function . 好像除了简化代码,并没有什么新奇的对不对,那我们往下慢慢看. —————————————…
关于ES6 用箭头函数后的 this 指向问题
最近写完小程序后, 开始学习React, 因为有编译器, 就直接用ES6 新语法了, 中间自然离不开 () => { console.log('箭头函数的this是指向哪的问题')}; var obj2 = { id: 2333, test: () => console.log(this) } obj2.test();//window obj2.test.call(obj2);//window 那么我要这里 test函数的this 指向 obj2 是要怎么做呢 来分析下上面代码, 转换成 E…
es6之箭头函数
=> 箭头函数是ES6增加的函数表达式.将function关键字和函数名都删掉,并使用“=>”连接参数列表和函数体(低版本浏览器不支持) 箭头函数看上去只是语法的变动,其实也影响了this的作用域 1.无参数时候必须有括号 let fn = function(){ return 'helloWorld'; } //简写为: let fn = ()=>{ //但是没有参数时,括号不可以省略 return 'helloWorld'; } //根据规则二,简写为: let fn = ()=&g…
ES6使用箭头函数注意点
新事物也是有两面性的,箭头函数有他的便捷有他的优点,但是他也有缺点,他的优点是代码简洁,this提前定义,但他的缺点也是这些,比如代码太过简洁,导致不好阅读,this提前定义,导致无法使用JS进行一些ES5里面看起来非常正常的操作. 本质来说箭头函数没有自己的this,它的this是派生而来的,根据"词法作用域"派生而来. 由于箭头函数在调用时不会生成自身作用域下的this和arguments值,其持有外部包含它的函数的this值,并且在调用的时候就定下来了,不可动态改变,下面我就总结…
关于es6的箭头函数使用与内部this指向
特型介绍:箭头函数是ES6新增的特性之一,它为JS这门语言提供了一种全新的书写函数的语法. 'use strcit'; let arr = [1,2,3]; //ES5 let es5 = arr.map(function(n){ return n*2; }); //ES6 let es6 = arr.map(n => n*2); console.log(es5); //[2,4,6] console.log(es6); //[2,4,6] 箭头函数简化了原先的函数语法,不需要再写 functi…
es6的箭头函数
1.使用语法 : 参数 => 函数语句; 分为以下几种形式 : (1) ()=>语句 ( )=> statement 这是一种简写方法省略了花括号和return 相当于 ()=>{return statement;} 这和 匿名函数 function(){return statement;}等同 零个参数用()表示; (2) ( ) =>{多行语句} 多行语句就不能省略花括号了,没有写return则返回 undefined; (3) x =>{stat…