首页 > 编程知识 正文

html左右滑动箭头符号,html左右箭头

时间:2023-05-03 14:15:08 阅读:35946 作者:688

回头看

首先,让我们回顾一下下箭头函数的基本语法。

ES6中添加了箭头函数:

中选择所需的墙类型。

如果需要将多个参数传递给函数:

如果函数的代码块需要多个语句:

如果需要直接返回对象:

与变量构造合并:

很多情况下,这样使用可能是不可能的,所以再举一个例子吧。 例如,在React和Immutable的技术选择中,我们处理一个事件就会变成这样:

实际上可以简化为以下内容

进行比较

本文重点比较了箭号函数和常规函数。

主要区别如下。

没有this

因为箭头函数没有this,所以必须通过查找范围链来确定this的值。

也就是说,如果箭头函数包含在非箭头函数中,则this将绑定到最近非箭头函数的this。

模拟实际开发实例。

我们的需求是点击按钮,改变那个按钮的背景颜色。

为了便于开发,如果我们需要远离Button组件并使用,可以直接:

HTML代码如下:

JavaScript代码如下:

看起来没有问题,但结果是uncaught typeerror : cannotreadproperty ' style ' of undefined

这是因为使用addEventListener ()在元素中注册事件时,事件函数的this值是对该元素的引用。

因此,如果我们在setBgColor中指向console.log(this ),this指向按钮元素,则this.element为undefined,当然报告错误。

因为this指向按钮元素,所以让我们直接更改setBgColor函数。

你能解决这个问题吗?

确实可以这样做,但在实际开发中,setBgColor可能还调用其他函数。 例如,写如下。

因此,setBgColor的this希望指向实例对象,并允许调用其他函数。

利用ES5,我们通常这样做:

为了避免高级监听器的影响,请使用bind强制将setBgColor ()的this绑定为实例对象

使用ES6可以更好地解决这个问题。

因为箭头函数没有this,所以在外层查找this的值,即绑定事件的this。 此时,this指向实例对象,因此可以正确调用this.setBgColor方法,this.setBgColor中的this也正确指向实例对象。

请注意,在此添加另一个,bindEvent和setBgColor使用普通函数的形式,而不是箭头函数。 如果更改为箭头函数,则函数中的this将指向窗口对象。

最后,因为箭号函数没有this,所以也不能用call ()、apply ()、bind ()等方法改变this的方向。 请看一个例子。

没有规则

箭号函数没有自己的arguments对象。 这不一定是坏事。 因为箭头函数可以访问外围函数的arguments对象。

如果我们要访问箭头函数的参数呢?

可以以命名参数或rest参数的形式访问参数:

3 .不能从new关键字调用

JavaScript函数有两个内部方法: [[Call]]和[[Construct

]]。

>

当通过 new 调用函数时,执行 [[Construct]] 方法,创建一个实例对象,然后再执行函数体,将 this 绑定到实例上。

>

当直接调用的时候,执行 [[Call]] 方法,直接执行函数体。

>

箭头函数并没有 [[Construct]] 方法,不能被用作构造函数,如果通过 new 的方式调用,会报错。

>

>

4. 没有 new.target

因为不能使用 new 调用,所以也没有 new.target 值。

>

关于 new.target,可以参考 http://es6.ruanyifeng.com/#docs/class#new-target-%E5%B1%9E%E6%80%A7

>

5. 没有原型

由于不能使用 new 调用箭头函数,所以也没有构建原型的需求,于是箭头函数也不存在 prototype 这个属性。

>

>

6. 没有 super

连原型都没有,自然也不能通过 super 来访问原型的属性,所以箭头函数也是没有 super 的,不过跟 this、arguments、new.target 一样,这些值由外围最近一层非箭头函数决定。

>

总结

最后,关于箭头函数,引用 MDN 的介绍就是:

>

An arrow function expression has a shorter syntax than a function expression and does not have its own this, arguments, super, or new.target. These function expressions are best suited for non-method functions, and they cannot be used as constructors.

>

翻译过来就是:

>

箭头函数表达式的语法比函数表达式更短,并且不绑定自己的this,arguments,super或 new.target。这些函数表达式最适合用于非方法函数(non-method functions),并且它们不能用作构造函数。

>

那么什么是 non-method functions 呢?

>

我们先来看看 method 的定义:

>

A method is a function which is a property of an object.

>

对象属性中的函数就被称之为 method,那么 non-mehtod 就是指不被用作对象属性中的函数了,可是为什么说箭头函数更适合 non-method 呢?

>

让我们来看一个例子就明白了:

>

>

自执行函数

自执行函数的形式为:

>

>

或者

>

>

利用箭头简化自执行函数的写法:

>

>

但是注意:使用以下这种写法却会报错:

>

>

为什么会报错呢?嘿嘿,如果你知道,可以告诉我~

>

ES6 系列

ES6 系列目录

>

ES6 系列预计写二十篇左右,旨在加深 ES6 部分知识点的理解,重点讲解块级作用域、标签模板、箭头函数、Symbol、Set、Map 以及 Promise 的模拟实现、模块加载方案、异步处理等内容。

>

如果有错误或者不严谨的地方,请务必给予指正,十分感谢。如果喜欢或者有所启发,欢迎 star,对作者也是一种鼓励。

原文标题:箭头函数– ECMAScript 6进阶 - Js中文网 · 前端进阶资源教程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。