对象
一、对象:
1.实例化对象的方式:new Object()
var obj = {
name:”张三”
}
读取对象上的属性:obj.name||obj[“name”]
动态的给对象添加属性obj.age||obj[“age”] = 值
删除对象的属性:【关键字delete】
delete obj.name
注意:对象的属性也是一个对象,属性(name)默认情况下,name属性的四大属性分别是:value(属性的值),writable(是否可写入),enumerable(是否可枚举),configurable(是否可操作),四大属性除了value属性,其他三个默认为true
2.定义属性
1)定义单个属性
给对象定义属性,只定义一个值的情况下,其他三个属性的默认值为false
Object.defineProperty(obj,”name”,{
value:”张三”,
writable:true,
enumerable:true,
configurable:true
})
2)定义多个属性
Object.defineProperties(obj,{
age:{
value:100,
writable:true,
enumerable:true,
configurable:true
}
Name:{
value:”张三丰”
}
})
3.取值器-复制器
var vart = {
_wheel:4,
get wheels(){
return this._wheel;
},
set wheels(value){
if(value < this._wheel){
throw new Error(“值太小”)
}
this._theel = value;
}
}
4.冻结对象:
1)冻结单层对象
Object.freeze();
2)封装深度冻结的函数
function deepFreeze(obj){
obj = Object.freeze(obj);
for(let property in obj){
if(Object.prototype.toString.call(obj[property]) == “[object Object]”){
deepFreeze(obj[property]);
}
}
return obj;
}
deepFreeze(obj)
5.获取对象所有可枚举属性:Object.keys(对象)
获取对象所有属性的描述器:Object.getOwnPropertyDescriptors(对象)
获取对象单个属性的描述器:Object.getOwnPropertyDescriptor(对象,属性);
获取对象中所有的属性: Object.getOwnPropertyNames(对象)
判断一个对象上是否有该属性:*.prototype.hasOwnProperty(“属性名”)