ES6
文章平均质量分 88
前端小菜鸟 zZ
种一棵树最好的时间是十年前,其次是现在
展开
-
ES6基础6
这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。上面代码中,Promise.all方法接受一个数组作为参数,p1、p2、p3都是Promise对象的实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为Promise实例,再进一步处理。Promise.race方法的参数与Promise.all方法一样,如果不是 Promise 实例,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理。原创 2024-03-12 22:21:55 · 948 阅读 · 0 评论 -
ES6 Proxy和Reflect
一般来说,如果要绑定一个函数的this对象,可以这样写fn.apply(obj, args),但是如果函数定义了自己的apply方法,就只能写成Function.prototype.apply.call(fn, obj, args),采用Reflect对象可以简化这种操作。值得注意的是,has方法拦截的是HasProperty操作,而不是HasOwnProperty操作,即has方法不判断一个属性是对象自身的属性,还是继承的属性。上面代码中,obj对象禁止扩展,结果使用has拦截就会报错。原创 2024-03-12 16:44:16 · 977 阅读 · 0 评论 -
ES6 Set和Map的使用
由上可知,Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。Set结构的实例有四个遍历方法,可以用于遍历成员。需要特别注意的是,Map的遍历顺序就是插入顺序。方法,表面是针对同一个键,但实际上这是两个值,内存地址是不一样的,因此。它类似于数组,但是成员的。同理,同样的值的两个实例,在Map结构中被视为两个键。的值是一样的,但是它们在Map结构中被视为两个键。原创 2024-03-11 21:45:23 · 1109 阅读 · 0 评论 -
ES6函数和对象的扩展
函数的运行结果(即函数名之后有一对圆括号),这表明参数的默认值不是在定义时执行,而是在运行时执行(即如果参数已经赋值,默认值中的函数就不会运行),这与python语言不一样。是一个Generator函数,执行后返回的是一个遍历器对象,对这个遍历器对象执行扩展运算符,就会将内部遍历得到的值,转为一个数组。方法返回一个对象,所有原对象的属性名都是该对象的属性名,对应的属性值就是该属性的描述对象。该运算符将一个数组,变为参数序列。上面代码中,属性名为数值的属性,是按照数值大小,从小到大遍历的,因此返回的顺序是。原创 2024-03-11 18:07:04 · 1155 阅读 · 0 评论 -
ES6字符串和数组方法使用
方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。上面代码表示将从3号位直到数组结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。原创 2024-03-10 21:01:18 · 985 阅读 · 0 评论 -
ES6基础1
对于编译器来说,一个式子到底是模式,还是表达式,没有办法从一开始就知道,必须解析到(或解析不到)等号才能知道。ES6的规则是,只要有可能导致解构的歧义,就不得使用圆括号。上面代码中,调用bar函数之所以报错(某些实现可能不报错),是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“。解构赋值允许,等号左边的模式之中,不放置任何变量名。因此,可以写出非常古怪的赋值表达式。由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构。对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。原创 2024-03-10 19:07:48 · 970 阅读 · 0 评论