JS对象的基本用法

125 阅读1分钟

一、JS对象的概念
JS对象是无序的数据集合,是键值对的集合。

let student={"name":"frank","age":18}

键名是字符串,引号可省略,省略后也还是字符串

var a = {2:222}
Object.keys(a) //["2"]

二、声明对象的两种语法
let a = 1
const a = 1

三、如何删除对象的属性
delete obj['xxx']
delete obj.xxx
检查是否删除成功:'xxx' in obj === false

四、如何查看对象的属性
查看自身的所有属性名: Object.keys(object)
查看自身的所有属性值: Object.name(object)
查看自身+共有属性: console.dir(object)
查看自身所有属性名+值:Object.entriesz(obj)

判断是否自身属性: object.hasOwnProperty('key')
每个对象都有原型,对象的原型也是对象,原型也有原型,为null


中括号语法: obj['key']
点语法: obj.key
优先使用中括号语法,点语法容易误以为key不是字符串
报错语法: obj[key] 没有引号,不等价以上语法
let name = 'frank'
obj[name]===obj['frank']

五、如何修改或增加对象的属性
直接赋值:
let obj={name:'frank'}
obj.name='frank'
obj['name']='frank'
let key='name'; obj['name']='frank'

改自身属性:
obj['name']='jack'
改共有属性:
obj. _ proto _ ['toString']='xxx' // 不推荐
Object.prototype['toString']='xxx'
改原型:
obj. _ proto _=common // 不推荐
let obj = Object.create(common)

原型包含所有共有属性。

六、'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj是检验属性是否存在对象中
obj.hasOwnProperty('name')是判断属性为自身的还是共有的

补充:
in 表示obj对象中是否包含name字符串这个键,如果原型链中也有name字符串这个属性名,也可以返回true
hasOwnProperty 则表示在obj对象中是否包含name字符串这个属性名。不从含原型链中查找