声明对象的两种语法
let obj = { 'name': 'cheng' , 'age' : 18 }
let obj = new Object({ 'name' : 'cheng' , 'age' : 18 })
其中name、age是属性名,cheng、18是属性值
变量做属性名
let a = 'name'
let obj = { a : 'cheng' } //属性名为'a'(字符串a)
let obj = new Object({ [a] : 'cheng' }) //属性名为'name'(字符串name)
如何删除对象的属性
delete obj.xxx / delete obj['xxx'] //删除obj的xxx属性
'xxx' in obj === false //obj对象不含xxx属性名,如果为true,则存在
'xxx' in obj && obj.xxx === undefined //含有属性名xxx,但值为undefined
如何查看对象的属性
查看所有属性:
Object.keys(obj) //查看自身所有的属性
console.dir(obj) //查看所有的自身+共有属性
obj.hasOwnProperty('toString') //判断一个属性是自身还是共有的
查看单个属性:
obj['name']
obj.name //name是字符串
obj[name] //name是变量
如何修改或增加对象的属性
直接赋值:
let obj = { 'name': 'cheng' }
obj.name = 'chen'
obj['name'] = 'chen'
obj['na'+'me'] = 'chen'
----------------------------
let key = 'name'
obj[key] = 'chen'
批量赋值:
Object.assign(obj, { age : 18, color : 'red' )
'name' in obj和obj.hasOwnProperty('name') 的区别
-
hasOwnProperty
用法:obj.hasOwnProperty('name') ,表示obj为对象,name为要判断的字符串
它只会判断一个对象属性里是否包含某个name,此方法不会去判断原型
var obj={ name:123 }; obj.hasOwnProperty('name'); //true obj.hasOwnProperty('hasOwnProperty'); //false -
in
用法:'name' in obj,表示obj为对象,name为要判断的字符串
它只会判断一个对象属性里是否包含某个name,此方法会去判断原型有没有
var obj={ name:123 }; obj.hasOwnProperty('name'); //true obj.hasOwnProperty('hasOwnProperty'); //true