声明对象的两种语法
let obj={'name':'frank','age':18}let obj=new Object({'name':'frank','age':18})
如何删除对象的属性
-
obj.name=undefined //删除属性值,使属性值位undefined -
delete obj.name; //删除了这个属性名以及属性值 -
delete obj['name']//删除了这个属性名以及属性值 -
注意区分属性值位undefined和不含属性名:
不含属性名:'name' in obj ===false
含属性名但值为undefined :'name' in obj && obj.name===undefined 注意:obj.name===undefined 不能判定name是否为obj的属性
如何查看对象的属性
- 查看自身所有属性:
- 查看属性名(键值key):
Object.keys(obj) - 查看属性值:
Object.values(obj) - 查看属性名和属性值:
Object.entries(obj)
- 查看自身加共有属性:
console.dir(obj) - 判断一个属性是自身属性还是共有属性:
obj.hasOwnProperty('name')---->true||false - 查看某个属性:
obj['key']或obj.keykey为要查看的属性名
如何修改或增加对象的属性
-
直接赋值 :
let obj={name:'frank'}obj.name='frank或obj['name']='frank -
批量赋值:
Object.assign(obj,{age:18,gender:'man'}) //这是es6新出的api -
修改或增加共有属性:
推荐使用:
var person=Object.create(common);//这样,person的原型就是common了
'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj :判断的是对象的所有属性,包括对象实例及其原型的属性; 而hasOwnProperty则是判断对象实例的是否具有某个属性,不包含其原型的属性。
例如:
var obj={
key:123
};
obj.hasOwnProperty('key'); //true
obj.hasOwnProperty('hasOwnProperty'); //false
var obj={
key:123
};
'key' in obj; //true
'hasOwnProperty' in obj; //true