你对ES6中对象新增的方法有了解吗?

335 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

Object.is()

Object.is() 方法的作用是用来判断两个值是否相等。

它既然是用来判断两个值是否相等,这里我们以对象为例,声明两个变量,并且为其设置初始值,初始值为空对象。

  const objA={};
  const objB={};
  const result=Object.is(objA,objB)
  console.log(result);

执行的结果如下图所示:

image.png

两个对象对比的结果为 false,原因是这两个对象的值都是引用类型,虽然它们的值相同,但是它们引用地址不一样。

  const numA=1;
  const numB=1;
  const result=Object.is(numA,numB)
  console.log(result);
 

执行的结果如下图所示:

image.png

numA 与 numB 结果为 true,它们的值和类型都相等,对比的结果为 true。

  const numA=1;
  const numB='1';
  const result=Object.is(numA,numB)
  console.log('result',result);

将 numB 的值修改为字符串,运行结果如下图所示:

image.png

Object.is() 它不仅判断值是否相等,来判断这个数据类型是否相等。

之前,判断值是否相等两种方式“==”和“===”方式。

  const numA=1;
  const numB='1';
 if(numA==numB){
	console.log('numA==numB 比较结果为 true');
  }else{
	console.log('numA==numB 比较结果为 false');
  }

image.png

使用“==”方式进行判断,只有数值或者数据类型其中一个相等,“==” 判断的结果为 true,这也是使用 “==” 判断的弊端。

  const numA=1;
  const numB='1';
  if(numA===numB){
	console.log('numA===numB 比较结果为 true');
  }else{
	console.log('numA===numB 比较结果为 false');
  }
  

image.png

使用 “===” 输出结果为 false ,原因就是不仅要判断值是否相等,还要判断类型是否相等。使用 “===” 方式进行判断也有弊端,例如 “NaN===NaN”。

image.png

使用 Object.is() 方式判断 NaN。

const result=Object.is(NaN,NaN);
console.log('NaN===NaN 比较结果为',result);

image.png

不仅能对普通类型和对象类型的值进行判断,而且对一些特殊的值能正常判断处理。

Object.is() 的特点:不仅可以对值类型进行正常判断,而且对象类型的值也能正常的判断。对于一些特殊的值也能正常判断,例如 NaN。

Object.assign()

Object.assign() 是用来把两个目标对象进行合并的。

 const objA={name:"itbbfx"}
 const objB={age:27}
 const result=Object.assign(objA,objB);
 console.log('result',result);

执行结果如下图所示:

image.png

Object.keys()

它的返回值是数组,数组中包含目标对象的所有可遍历属性的键名。参数:要返回其枚举自身属性的对象。返回值:一个表示给定对象的所有可枚举属性的字符串数组。

 const obj={
	name:"itbbfx",
	age:27
 }
 const result=Object.keys(obj);
 console.log('result',result);

执行的结果如下图所示:

image.png

Object.values()

返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值.

const obj={
	name:"itbbfx",
	age:27
 }
 const result=Object.values(obj);
 console.log('result',result);

执行结果如下图所示:

image.png

Object.entries()

Object.entries() 方法返回的是所有可遍历属性键值对数组。

 const obj={
	name:"itbbfx",
	age:27
 }
 const result=Object.entries(obj);
 console.log('result',result);

执行结果如下所示:

image.png

面试中如何回答

  • Object.is() 方法用于比较两个值是否相等。
  • Object.assign() 方法用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。
  • Object.keys() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键名。
  • Object.values() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键值。
  • Object.entries() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键值对数组。