ES6浅谈--数组扩展、对象扩展

数组扩展

1.includes()方法,参数为要检测的值。includes方法有点像indexOf(),indexOf未检测到则返回-1,否则返回下标。includes则是返回true或false。includes可以检测NaN。第二个参数表示从什么位置检测。

2.flat和flatMap。flat负责把数组拉平,意思是一个二维数组调用flat方法会变成一维数组。参数传的是数组的维度。例如传2则表示将3维拉成1维。如果数组中有空位则跳过。flatMap有点像flat方法和Map方法的结合。先对每个成员执行一次map操作,然后再拉平。默认拉平一层。

3.ES6将空位转成undefined。遍历也会遍历空位。尽量避免出现空位。(如[,,,]这种就是空位)

对象扩展

const foo = ‘bar‘;
const baz = {foo};
baz // {foo: "bar"}

// 等同于
const baz = {foo: foo};

1.ES6中可以将变量和函数直接写入到对象中作为对象的数组和方法。方法名可以简写,如someFunction:function(){}可以简写成someFunction(){}。简写的函数不能被当做构造函数使用。

2.ES6允许在定义对象的属性名使用表达式定义,如[‘a‘+‘bc‘](这是一个对象的属性)= true(一个对象的值)。

3.函数的name属性可以返回函数名,如果是有访问器属性例如getter和setter则需要在描述对象get和set上调用name方法。构造函数name属性返回anonymous,bind方法返回bound 函数名。

4.对象的每个属性都有一个描述对象用于控制该属性的行为。分别是value,writable,enumerable,configurable。尽量用object.keys()代替for..in遍历,因为遍历会引入继承的问题。

5.this指向函数所在的当前对象,新的super指向当前对象的原型对象。只有使用对象方法的简写可以使用super否则报错。

原文地址:https://www.cnblogs.com/harrywu96/p/12172732.html

时间: 2024-10-08 22:09:21

ES6浅谈--数组扩展、对象扩展的相关文章

ES6浅谈 -- 数组扩展

1.数组可以用spread参数合并,使用该参数要注意被合并的一定是一个数组对象.另外不管是数组合并还是数组拼接都是浅拷贝,实质是拷贝地址(引用). 2.可以和解构赋值混用,如const [first, ...rest] = [1,2,3,4,5]; 还可以将字符串每个字符拆分然后变成数组元素. 3.Array.from(),将类数组对象和可遍历对象转成数组:Array.of(),将一组值转为数组,与Array不同的是,array只跟一个参数会认为输入了这个数组的长度,而array of则认为是输

浅谈Java回收对象的标记和对象的二次标记过程_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一.对象的标记 1.什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理. 至于怎么标记,一般有两种方法:引用计数和可达性分析. 引用计数实现起来比较简单,就是给对象添加一个引用计数器,每当有一个地方引用它时就加1,引用失效时就减1,当计数器为0的时候就标记为可回收.这种判断效率很高,但是很多主流的虚拟机并没有采用这种方法,主要是因为它很难解决几个对象之间循环引用的

ES6浅谈--const,数组解构

关于const: 1.const声明的基本类型的值不可重复声明,不可修改,声明之后需要初始化,声明存在暂时性死区,只在声明的块级作用域内有效. 2.const本质上确保的是变量的内存地址的数值不会被改动,所以对于基本类型的值来说,数值在栈中保存,不会被修改:但是对于对象来说,const声明的对象不可以被改变的是内存地址,数据存在堆中,是可以被修改的,如果想不被修改需要freeze. 3.冻结对象后不能新添加属性,但是还可以修改原有属性,所以需要彻底冻结所有属性. 4.浏览器环境下顶层对象和全局对

浅谈数组

数组 我们平常在书写代码的时候遇到需要使用多个数据,通过定义多个变量太麻烦了,所以就定义了数组. 数组的概念和作用 数组是一组数据的集合,用来存放多个数据.适用于需要操控多个数据,但是只能使用一个数据的情况. 数组的创建 字面量 var arr = []; 构造函数 var arr = new Array(); 注意事项 当两种方式创建数组,数组参数为1时,如下代码所示 var arr = [5]; //[5]代表数组里只有一个成员5 var arr1 = new Array(5);//[emp

ES6 - Note3:数组、对象与函数的扩展

一.数组的扩展,ES6在数组扩展了一些API,以实现更多的功能 1.Array.from:可以将类数组和可遍历的数据结构转换成真正的数组,如下所示 var a = { '0':1,'1':1,length:2 }; var arr = Array.from(a); console.log(arr) Array [ 1, 1 ] ---------------ES5的实现----------- var arr = [].slice.call(a); console.log(arr) Array [

ES6浅谈--解构,字符串扩展

解构: 1.大括号在句首会被认为是代码块,通过加圆括号可以解决问题,但是在声明语句中不能加圆括号,只有在赋值语句的非模式部分可以. 2.数值和布尔值解构会先转换成对象,然后用其包装对象的toString方法取得值再赋值. 3.解构用途:交换变量值:函数返回多个值取值:参数定义:提取json数据:参数默认值:遍历map:模块方法. 字符串扩展: 1.大括号增加unicode范围识别,另外支持for of遍历字符串. 2.模板字符串可以用于输入html文本,用${}做变量识别,反引号用反斜杠转义,t

ES6浅谈 -- 数值扩展,函数扩展

数值扩展: 1.trunc(),去小数,非数字先用Number()转,转不了返回NaN.sign(),判断正负或0,正返回1,负返回-1,转换同上.cbrt(),计算立方根,转换同上.clz32(),计算参数的32位无符号整数前导0的个数.imul(),计算32位带符号整数相乘所得.Math.fround方法返回一个数的32位单精度浮点数形式.Math.hypot方法返回所有参数的平方和的平方根.BigInt数据类型,整数无位数限制,可以非常大. 函数扩展: 1.在看到参数默认值的时候,没有什么

浅谈Manacher算法与扩展KMP之间的联系

首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法. 解法一 通过枚举S的子串,然后判断该子串是否为回文,由于S的子串个数大约为,加上每次判断需要的时间,所以总的时间复杂度为,空间复杂度为. bool check(string &S, int left, int right) { while (left < right && S[left]

ES6 - 解构(数组和对象)

解构对象 /** * 解构:快捷,方便 * * 对象解构 */ { var expense = { type: "es6", amount: "45" }; //1.ES5 // var type = expense.type; // var amount = expense.amount; // console.log(type, amount); //output: es6 45 //2.ES6 const { type, amount, abc } = exp