声明对象的两种语法
let obj = new Object({'name': 'zhangsan', 'age': 18})标准写法let obj = {'name': 'zhangsan', 'age': 18}简写法
细节知识
- 奇奇怪怪的东西都会变成字符串,如图所示
- 如何把变量作为属性值 let p = 'name' let obj = {[p]: 'zhangsan'}, 此时, 属性名为'name'
但 let obj = { p: 'zhangsan'} 这样的写法, 属性名为 'p'
如何删除对象的属性
- delete obj.xxx
- delete obj['xxx']
如何查看对象的属性
- obj.xxx
- obj.['xxx']
ps : 如果使用obj[xxx]去查看对象的属性时,JS会先去对xxx求值,再把x带入去查找属性,例如
如何修改或增加对象的属性
- 直接赋值,例如
let obj = {'name': 'zhangsan'} 或者是
obj.name = 'zhangsan' 又或者是
obj['name'] = 'zhangsan' 还可以
obj['na' + 'me'] = 'zhangsan'
- 批量赋值
Object.assign(obj, {age: 18, gender: 'man'})
- 修改隐藏属性 直接上例子
如上图所示,可以使用 Object.create()来修改隐藏属性。 另外,也可以直接
obj.__proto__ = common来直接修改,但不推荐
in 运算符和 Object.hasOwnProperty 方法有什么区别?
hasOwnPropert方法返回值是一个布尔值,指示对象自身属性中是否具有指定的属性,这个方法会忽略掉那些从原型链上继承到的属性。
而in运算符不会忽略掉其从原型链继承来的属性
例如: