继承
2023-02-08 本文已影响0人
败于化纤
1.Object.getPrototypeOf(obj)
- 返回指定对象的原型
语法:
Object.getPrototypeOf(object)
Object.getPrototypeOf(对象名)
返回值:给定对象的原型。如果没有继承属性,则返回 null
。
实例:访问obj1的原型对象
const obj1 = {x:1,y:2}
console.log(Object.getPrototypeOf(obj1))
2.Object.keys()
- 返回值:返回一个数组
- 该数组包含给定对象的自身可枚举属性名
自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
可枚举属性:字面量法创建的对象属性都是可枚举的
语法
Object.keys(对象名)
返回值:返回一个数组
该数组包含给定对象的自身可枚举属性名
实例返回obj1可枚举的属性名
const obj1 = {x:1,y:2}
const arr = Object.keys(obj1)
console.log(arr)
3.Object.values()
- 返回值:返回一个数组
- 该数组包含给定对象的自身可枚举属性值
自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
可枚举属性:字面量法创建的对象属性都是可枚举的
语法
Object.values(对象名)
返回值:返回一个数组
该数组包含给定对象的自身可枚举属性值
实例:返回obj1可枚举的属性值
const obj1 = {x:1,y:2}
const arr = Object.values(obj1)
console.log(arr)
4.Object.entries()
定义:
- 返回值:返回一个数组
- 该数组包含给定对象的自身可枚举属性名和属性值
自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
可枚举属性:字面量法创建的对象属性都是可枚举的
语法:
Object.entries(对象名)
返回值:返回一个数组
该数组包含给定对象的自身可枚举属性名和属性值
实例:返回obj身上可枚举的属性值和属性名
//Object.keys
const obj = {
x : 1,
y : 2,
}
//在obj身上一个z:3
obj.o = 4
obj.__proto__.z=3
Object.getPrototypeOf(obj).w = 4
console.log(obj.__proto__)
const Arr = Object.entries(obj)
console.log(Arr)//Array(3) [ (2) […], (2) […], (2) […] ]0: Array [ "x", 1 ]1: Array [ "y", 2 ]2: Array [ "o", 4 ]
//可枚举属性:字面量法创建的对象属性都是可枚举的
//自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
5.Object.hasOwnProperty()
定义:
- 检测一个属性是否是自身属性
语法
obj.hasOwnProperty("prop")
对象名.hasOwnProperty(“属性名”)
返回值:返回一个布尔值。
- false : 不是
- true : 是
实例:检测一个属性是否是自身属性
const obj = {
x : 1,
y : 2,
}
//在obj身上一个z:3
obj.o = 4
obj.__proto__.z=3
Object.getPrototypeOf(obj).w = 4
const Arr = obj.hasOwnProperty("mm")//加引号 false
console.log(Arr)
6.Object.propertyIsEnumerable()
定义:该方法用于检测指定的属性是否可枚举
语法:
Object.propertyIsEnumerable("属性名")
返回值:布尔值
实例:如何检测一个属性是否可枚举
const obj = {
x : 1,
y : 2,
}
//将y修改成不可枚举
Object.defineProperty(obj,"y",{
configurable:true,//是否可配置
enumerable:false,//是否可枚举
writable:false,//是否可修改
value:2,//值
})
console.log(obj.propertyIsEnumerable("x"))//true
console.log(obj.propertyIsEnumerable("y"))//false
7.object.assign()
定义:将所有的可枚举属性从一个或多个源对象复制到目标对象
语法:
object.assign(obj1,obj2)
- obj1:目标对象
- obj2:源对象
返回值:修改后的对象
实例:将obj2身上的属性复制给obj1
const obj1 = {
x : 1,
}
const obj2 = {
y:2,
z:3
}
Object.assign(obj1,obj2)
console.log(obj1)
8.对象的拷贝
方法1:
const obj1 = {
x : 1,
}
const obj2 = {
y:2,
z:3
}
obj2.__proto__.w=4//可枚举
//赋值obj2的属性复制到obj1中
//方法1
//1.使用遍历:迭代 枚举
for(key in obj2){//遍历对象的可枚举属性(自身加继承)
obj1[key] = obj2[key]
}
console.log(obj1)//Object { x: 1, y: 2, z: 3 , __proto__w: 4}
方法2:
const obj1 = {
x : 1,
}
const obj2 = {
y:2,
z:3
}
obj2.__proto__.w=4//可枚举
//方法2
for(key of Object.keys(obj2)){
obj1[key] = obj2[key]
}
console.log(obj1)
方法3
Object.assign(obj1,obj2)
console.log(obj1)