1.对象的创建 单个对象的创建
1.对象字面量
var obj = {name: "stk",age: 16,sayName() {console.log(this.name);}}
2.构造函数
var obj1 = new Object();
obj1.name = "lisi";
2.对象的访问
1.访问属性 点访问法
console.log(obj.name);
2.中括号访问法 可以解析变量
console.log(obj['sayName']());
3.遍历对象 key属性名 obj[key]该属性名对应属性值
for (let key in obj) {console.log(key,obj[key]);}
3.对象的删除
删除一个属性 delete
delete obj.name;
delete obj['name'];
4.对象的新增
obj['name'] = 'zhangsan';
5.将对象转为Boolean
var obj = {name: 'zhangsan'};
6.将对象转为String
console.log(obj.toString(),typeof (obj.toString()));
console.log(String(obj), typeof (String(obj)));
console.log(obj+"",typeof (obj+""));
console.log(obj.valueOf(),typeof (obj.valueOf()));
7.将对象转为number
console.log(Number(obj), typeof (Number(obj)));
console.log(+obj,typeof (+obj));
console.log(parseInt(obj), typeof (parseInt(obj)));
console.log(parseFloat(obj), typeof (parseFloat(obj)));
如果重写tostring 所有转number方法都会调用tostring
如果重写了valueOf Number() 和 + 会调用valueOf
如果两个方法都重写Number() 和 + 会调用valueOf;parseInt和parseFloat调用toString
8.检测属性
'属性' in obj
检测属性是否是自有或者继承属性 in
是自有或继承 返回true 否则为false
hasOwnProperty
检测属性是否是自有属性 对于继承属性返回false
propertyIsEnumerable
检测属性是否为可枚举属性
8.静态方法 定义属性
定义一个属性 可删除 可枚举 可修改
Object.defineProperty(object,'',{
//数据属性
configurable:true/false //true可删除
writable:true/false //true可写
value:'',
enumerable:true/false //true可枚举 不可使用for in遍历
})
定义多个属性
Object.defineProperty(object,{
name:{
//数据属性
configurable:true/false //true可删除
writable:true/false //true可写
value:'',
enumerable:true/false //true可枚举 不可使用for in遍历
},
age:{},
gender:"{}
})
获取属性特性
读取一个属性特性
getOwnPropertyDescriptor(object,'name')
getOwnPropertyDescriptor(object,'age')
读取多个属性特性
getOwnPropertyDescriptor(object)
访问器属性 控制私有属性的修改和读取
var obj ={
_yaer:2023
};
Object.defineProperty(obj,'yaer',{
//读取year时触发
get:function(){
return this._yaer;
}
//不提供set函数 不可以直接修改yaer属性 和_yaer属性
set:function(newYear){
if(this._yaer!=newYear){
this._yaer=newYear;
}
}
});
obj.year=2024;
对象的序列化和反序列化 可以实现深拷贝
1.序列化 将对象转换为json字符串
JSON.stringify(obj) {"name":"zhangsan","age":12}
2.反序列化 将JSON字符串转为对象
JSON.parse(JSON.stringify(obj)) {name:"zhangsan",age:12}