对象扩展
新的对象字面量特性
1,方法的定义
let obj={
a:1,
show(){
console.log("show")
}
}
obj.show()
运行结果
2,属性的简写
let na="sagasw"
let ob={
na,
age:10
}
运行结果
3,计算属性名
let kok='name'
let galarxy={
[kok]:1,
[kok+'1']:1111,//[]内可以拼接
b:2
}
console.log(galarxy)
console.log(galarxy[kok])
console.log(galarxy[kok+'1'])
运行结果如下
新的对象方法
1,object.is
比较是否相等
console.log(Object.is(1,'1'))
console.log(Object.is(NaN,NaN))
运行结果如下
2,Object.setPrototypeOf
原型设置
let obj={
a:1,
b:2
}
let obj1={
c:3
}
Object.setPrototypeOf(obj,obj1);
console.log(obj.c);
运行结果如下
原型第一种(内置属性):
obj.proto=obj1;
原型第二种(设置属性):
let obj2=Object.create(obj)//缺陷:不能再次设置对象原型
console.log(obj2.proto)
3,Object.assign
let obj1={
a:1
}
let obj2={
b:2
}
let obj3={
c:3
}
Object.assign(obj1,obj2,obj3);
console.log(obj1);
//注意:1,复制对象属性,自身的可遍历的属性
默认可遍历>>>
let obj1={
a:1
}
let obj2={
b:2
}
let obj3={
c:3
}
Object.assign(obj1,obj2,obj3);
console.log(obj1.c);
//注意:1,复制对象属性,自身的可遍历的属性
手动更改为不可遍历>>>
let obj1={
a:1
}
let obj2={
b:2
}
let obj3={
c:3
}
Object.setPrototypeOf(obj2,obj3);
Object.defineProperty(obj2,'e',{
value:5,
enumerable:false
})
console.log(obj2.e);
Object.assign(obj1,obj2,obj3);
//注意:1,复制对象属性,自身的可遍历的属性
当enumberable设置为false后的运行结果>>>
当enumberable设置为false后的运行结果>>>
//注意:2,复制是一个对象一个对象复制的
//注意:3,复制是个浅拷贝
对象的遍历
1,Object.keys
2,Object.values(es2017)
3,Object.entries(es2017)
let obj={
a:1,
b:2,
c:3
}
console.log(Object.keys(obj))
console.log(Object.values(obj))
console.log(Object.entries(obj))
运行结果如图所示:
转载:https://blog.csdn.net/qq_41136216/article/details/105520380
查看评论