一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
Object.is()
Object.is() 方法的作用是用来判断两个值是否相等。
它既然是用来判断两个值是否相等,这里我们以对象为例,声明两个变量,并且为其设置初始值,初始值为空对象。
const objA={};
const objB={};
const result=Object.is(objA,objB)
console.log(result);
执行的结果如下图所示:
两个对象对比的结果为 false,原因是这两个对象的值都是引用类型,虽然它们的值相同,但是它们引用地址不一样。
const numA=1;
const numB=1;
const result=Object.is(numA,numB)
console.log(result);
执行的结果如下图所示:
numA 与 numB 结果为 true,它们的值和类型都相等,对比的结果为 true。
const numA=1;
const numB='1';
const result=Object.is(numA,numB)
console.log('result',result);
将 numB 的值修改为字符串,运行结果如下图所示:
Object.is() 它不仅判断值是否相等,来判断这个数据类型是否相等。
之前,判断值是否相等两种方式“==”和“===”方式。
const numA=1;
const numB='1';
if(numA==numB){
console.log('numA==numB 比较结果为 true');
}else{
console.log('numA==numB 比较结果为 false');
}
使用“==”方式进行判断,只有数值或者数据类型其中一个相等,“==” 判断的结果为 true,这也是使用 “==” 判断的弊端。
const numA=1;
const numB='1';
if(numA===numB){
console.log('numA===numB 比较结果为 true');
}else{
console.log('numA===numB 比较结果为 false');
}
使用 “===” 输出结果为 false ,原因就是不仅要判断值是否相等,还要判断类型是否相等。使用 “===” 方式进行判断也有弊端,例如 “NaN===NaN”。
使用 Object.is() 方式判断 NaN。
const result=Object.is(NaN,NaN);
console.log('NaN===NaN 比较结果为',result);
不仅能对普通类型和对象类型的值进行判断,而且对一些特殊的值能正常判断处理。
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);
执行结果如下图所示:
Object.keys()
它的返回值是数组,数组中包含目标对象的所有可遍历属性的键名。参数:要返回其枚举自身属性的对象。返回值:一个表示给定对象的所有可枚举属性的字符串数组。
const obj={
name:"itbbfx",
age:27
}
const result=Object.keys(obj);
console.log('result',result);
执行的结果如下图所示:
Object.values()
返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值.
const obj={
name:"itbbfx",
age:27
}
const result=Object.values(obj);
console.log('result',result);
执行结果如下图所示:
Object.entries()
Object.entries() 方法返回的是所有可遍历属性键值对数组。
const obj={
name:"itbbfx",
age:27
}
const result=Object.entries(obj);
console.log('result',result);
执行结果如下所示:
面试中如何回答
- Object.is() 方法用于比较两个值是否相等。
- Object.assign() 方法用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。
- Object.keys() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键名。
- Object.values() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键值。
- Object.entries() 方法返回一个数组,成员是参数对象自身的所有可遍历属性的键值对数组。