内容1:声明对象的两种语法 内容2:如何删除对象的属性 内容3:如何查看对象的属性 内容4:如何修改或增加对象的属性 内容5:'name' in obj和obj.hasOwnProperty('name') 的区别
申明对象的两种语法
对象可以是无序的数据集合或键值对的集合。
let obj = {'name':'koko','age':18}\\简化写法
let obj = new Object({'name':'koko'})\\正规写法
- 键值是字符串,不是标识符,可以包含任何字符,包括空字符串''。
- 即使省略引号,键名仍然是字符串。
- Object.keys(obj)可以的到所有的key。
如何删除对象的属性
delete obj.xxx
delete obj['xxx']
- 注意区分属性值为undefined和不含属性名。
obj.name = undefined//删除属性值,没有删除属性
- 判断是否删除成功
'xxx' in obj === false
- 判断是否是只删除了属性值
'xxx' in obj && obj.xxx === undefined
如何查看对象的属性
查看自身所有属性
Object.keys(obj)
查看自身属性+共有属性
console.dir(obj)
或者依次用Object.keys打印
判断一个属性是属于自身or共有
obj.hasOwnProperty('toString')
查看单个属性
obj['key'] \\中括号语法
obj.key \\语法
obj.name !== obj[name]\\第一个name是字符串,第二个是变量
如何修改或增加对象的属性
直接赋值
let obj ={name:'koko'}
批量赋值
object.assign(obj,{age:18,gender:'female'})
无法通过自身修改或增加共有属性
- 如果一定要修改的话,可用以下方法,但一般不建议修改。
obj.__proto__.toString='xxx'
Object.prototype.toString='xxx'
直接修改隐藏属性
let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'koko'
- 修改后的隐藏对象仍然有一个原型。