JS Object对象方法+验证演示
文章目录
Object.is()
官方定义:
简单理解:Object.is():判断两个值是否为同一个值
验证演示:
console.log(Object.is(NaN, NaN)); ==>true
console.log(NaN === NaN);==>false
console.log(Object.is(undefined, undefined)); ==>true
console.log(undefined === undefined); ==>true
console.log(Object.is(null, null));==>true
console.log(null === null);==>true
console.log(Object.is(+0, -0));==>false
console.log(+0 === -0);==>true
console.log(Object.is("", ""));==>true
console.log("" === "");==>true
console.log(Object.is({}, {}));==>false
console.log({} === {});==>false
console.log(Object.is([], []));==>false
console.log([] === []);==>false
var one= { a: 1 };
var two = { a: 1 };
Object.is(one, one); ==> true
Object.is(one, two); ==> false
Object.freeze()
官方定义:Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。
简单理解:Object.freeze(obj):冻结对象,使无法修改内部的值
验证演示:
const one = {
age: 18,
name: "小白"
}
console.log(one.age); ==>18
Object.freeze(one)
one.age = 20
one["age"] = 20
delete one.age
console.log(one.age);==>18
Object.assign(target, …sources)
官方定义:
1.Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
2.如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。
简单理解:Object.assign(目标对象,后续对象):返回目标对象,前者与后者有冲突时,后者覆盖前者
验证演示:
var obj1 = {
prop1: 30
}
var obj2 = {
prop2: 40
}
var one = Object.assign(obj1, obj2)
console.log(one) ==>{ prop1: 30, prop2: 40 }
console.log(obj1)==>{ prop1: 30, prop2: 40 }
console.log(obj2)==>{ prop2: 40 }
var obj1 = {
prop1: 30
}
var obj2 = {
prop1: 20,
prop2: 40
}
var one = Object.assign(obj1, obj2)
console.log(one)==>{ prop1: 20, prop2: 40 }
console.log(obj1)==>{ prop1: 20, prop2: 40 }
console.log(obj2)==>{ prop1: 20, prop2: 40 }
Object.keys()
官方定义:
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
简单理解:
Object.keys():若为对象,序列化对象属性名;若为数组,序列化下标
验证演示:
var one = Object.keys({a:1,b:2,c:3})
console.log(one) ==>[ 'a', 'b', 'c' ]
var two = Object.keys(["one","two","three"])
console.log(two) ==> [ '0', '1', '2' ]
var three = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(three)); ==> ['2', '7', '100']
//分析:
序列化对象对象名
序列化数组下标
Object.values()
官方定义:
Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for…in循环的顺序相同
简单理解:序列化对象属性值
验证演示:
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); ==> ['bar', 42]
Object.entries()
官方定义:
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致.
简单理解:序列化对象键值对
验证演示:
let obj1 = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj1));
==>[ [ 'foo', 'bar' ], [ 'baz', 42 ] ]
let obj2 = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj2));
==>[ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ]