文章目录
- 一、Object.assign(obj...)
- 二、Object.defineProperty(obj, prop,descriptor)
- 三、Object.defineProperties(obj.props)
- 四、Object.getOwnPropertyDescriptor(obj,prop)
- 五、Object.getOwnPropertyDescriptors(obj)
- 六、Object.entries(obj)
- 七、Object.freeze(obj)
- 八、Object.isFrozen(obj)
- 九、Object.getOwnPropertyNames(obj)
- 十、Object.keys(obj):
- 十一、Object.values(obj):
- 十二、Object.getOwnPropertySymbols(obj)
- 十三、Object.getPrototypeOf(obj)
- 十四、Object.is(Value1 , Value2)
- 十五、Object.isExtensible(obj)
- 十六、Object.setPrototypeOf(obj,property)
- 十七、Object.create(obj,propertiesObject)
- 十八、Object.isSealed(obj)
- 十九、Object.Seal(obj)
- 补充:如何判断对象类型
一、Object.assign(obj…)
将所有可枚举属性的值(Enumerable:true)从一个或多个对象复制到目标对象,并返回目标对象. (如果遇到相同的可枚举属性,则后方的属性覆盖前方属性)
// Object.assign:
var obj1 = {
a:5,c:6 };
var obj2 = {
a:1,d:5 };
var obj3 = object.assign(obj1,obj2);
// { a:1,c:6,d:5}
二、Object.defineProperty(obj, prop,descriptor)
定义/修改一个对象中的属性
参数:
obj: 对象
prop:定义/修改的属性名称
descriptor:定义/修改的属性描述符
属性描述符: 数据描述符 / 存取描述符
数据描述符:
Configurable:能否delete删除属性(默认值false)
Writable: 能否修改属性的值(默认值false)
Value: 属性的值 (默认值undefined)
Enumerable: 该属性是否为可枚举 (默认值false)
存取描述符:
存取描述符属性 Enumerable 和 Configurable 和数据描述符一致
Get: 提供一个getter方法,访问调用
Set: 提供一个setter方法,修改时调用
// Object.defineProperty
var obj = new Object()
Object.defineProperty(obj, "name",{
Configurable : false ,
Enumerable: true ,
Writable: false,
Value: "无法被修改的值"
})
console.log(obj.name) // 无法被修改的值
三、Object.defineProperties(obj.props)
将所有可枚举属性的值从一个或多个对象复制到目标对象,并返回目标对象
参数:
obj: 定义/修改属性的对象
props: 对象们(数据描述符 or 属性描述符)
//Object.defineProperties
var obj2 = new Object();
Object.defineProperties(obj2, {
name: {
Writable: true,
Value: "张三"
},
Name: {
get: function() {
return `$(this.name)先生`
},
set: function(value){
this.name = value || "未知"
}
}
})
console.log(obj2.name) // 张三
console.log(obj2.Name) // 张三先生
obj2.Name = "李四"
console.log(obj2.Name) // 未知
四、Object.getOwnPropertyDescriptor(obj,prop)
获取对象中的一个属性描述
参数:
obj:目标对象
prop:目标属性名称
// Object.getOwnPropertyDescriptor:
var obj = {
property1:42 };
var descriptor1 = Object.getOwnPropertyDescriptor(obj,property);
console.log(descriptor1.Configurable) //true
console.log(descriptor1.Value) //42
五、Object.getOwnPropertyDescriptors(obj)
获取目标对象中的所有属性描述,如果没有任何自身属性,则返回空对象
六、Object.entries(obj)
返回自身可枚举属性的键值对,顺序与for in一致,返回一个二维数组 [[key:value]]
var obj1 = {
a:1,b:2 };
console.log(Object.entries(obj1))
// [["a": 1],["b":2]]
七、Object.freeze(obj)
冻结:一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性Enumerable、可配置性Configurable、可写性Writable,以及不能修改已有属性的值Value。此外,冻结一个对象后该对象的原型也不能被修改。
返回值:返回的不是对象的副本,而是对象本身
浅冻结
var o = Object.freeze(obj);
o === obj; // true
Object.