JS对象基本用法
对象
1.声明对象的语法
- 正规写法:
let obj = new Object({'name':'AKB'})
- 常用写法:
let obj = {'name':'AKB';'age':'18'}
- 注意点:键名是字符串不是标识符,可以包含任何字符,也可以以数字开头;引号可以省略(当键名里面包含有特殊字符时不能省),省略之后只能写标识符,键名仍是字符串。
2.属性名&属性值
- 每个key都是对象的属性名
- 每个value都是对象的属性值
Object.keys(obj)可以得到obj的所有key
- 用变量做属性名时,要用
[ ]包含起来,不加[ ]d的属性名会自动变成字符串,加了[ ]则会当作变量求值。
3.对象的隐藏属性
- JS中每一个对象都有一个隐藏属性,这个隐藏属性存储着其共有属性组成的对象的地址
- 共有属性组成的对象叫原型,即隐藏属性存储着原型地址
原型
1.每个对象都有原型
- 原型里存着对象的共有属性
- eg:obj的原型就是一个对象,
obj.__proto__存着这个对象的地址,此对象里有toString/constructoc/valueOf等属性
2.对象的原型也是对象
- 对象的原型也有原型
- obj={}的原型即为所有对象的原型,这个原型包含所有对象的共有属性,是对象的根,这个原型的原型为null。
删除属性
1.如何删除属性
delete obj.xxx
delete obj['xxx']
2.区分【不含属性名】&【属性值为undefined】
- 不含属性名的情况
'xxx' in obj === false
- 含有属性名,但其值为undefined的情况
'xxx' in obj && obj.xxx === undefined
obj.xxx === undefined 不能用来判定'xxx'是否为obj的属性
查看属性(读属性)
1.如何查看属性
- 查看自身所有属性
Object.keys(obj)
- 查看自身+共有属性
console.dir(obj)
- 补充:查看对象所有值
Object.values(obj);查看所有对象属性&属性值Object.entries(obj)
2.查看单属性
- 中括号语法
obj['key']
- 点语法
obj.key
obj.name 等价于 obj['name'],这里点后的name为字符串
obj.name 不等价于 obj[name],这里的[name]为变量
- 以上,注意区分
obj['name']和obj.name,obj[name],注意区别name和'name'。
3.'name' in obj和obj.hasOwnProperty('name')二者的区别
- 前者区分不了该属性是自身所有的还是公共属性
- 后者可以区分该属性是否只有自身所有
修改或增加属性
1.修改自身属性
- 直接赋值:
obj['name'] = 'ABC'
- 批量赋值:
object.assign(obj,{age:18,gender:'man'})
2.修改共有属性
- 注意:无法通过自身修改/增加共有属性
- 可通过
Object.prototype['toString'] = 'xxx'来修改原型,但一般不改原型。
3.修改隐藏属性
- 语法
let obj = Object.create(common)
4.增加属性:同修改属性。