JS对象的基本用法

93 阅读1分钟

七种数据类型

object, number, boolean, string, null, undefined, symbol

五个 Falsy 值

null, undefined, ‘’, 0, NaN

声明对象的两种语法

var a = { aa: 123} 简易写法
var a = new Object({ bb : 321}) 正式写法
键名 key 的引号 ' ' 可以省略可以包含任意字符
key是对象的属性名(property)

如何删除对象的属性

delete obj.xxxdelete obj[‘xxx’] 删除 obj 的 xxx 属性
obj.yyy = undefined 给yyy属性 赋值为 undefined
虽然属性的值 undefined 但是属性 yyy 还在

如何查看对象的属性

查看::自身所有属性:: Object.keys(obj)
查看 ::自身属性:: 和 ::共有属性:: console.dir(obj) 或者 依次用 Object.keys 打印出 obj.__proto__
判断一个属性是自身的还是共有的 obj.hasOwnProperty('toString')

obj['key'] 或者 obj.key
obj.name == obj[‘name’] ⚠️ 但不 == obj[name], name是字符串,而不是变量

如何修改或增加对象的属性

直接赋值
let obj = {name: 'fang'}
obj.name = ‘hong’ 给obj.name 重新赋值 来 修改对象的属性
obj.age = 20; 给obj 新增一个age 属性
批量赋值Object.assign(obj, {age: 23, gender: 'man'})

修改或增加共有属性
无法通过自身修改或增加共有属性
let obj = {}, obj2 = {} // 共有toString
obj.toString = ‘xxx’只会在自身属性上改 obj
obj2.toString 还是在原型上

’name’ in objobj.hasOwnProperty(‘name’) 的区别

var obj = {name: 'ning', age: 25};
delete obj.name //删除obj的name
'name' in obj //false 
obj.hasOwnProperty('name') //false

in关键字用来检查对象中是否存在指定的属性(包含实例属性和原型属性)
对象的hasOwnProperty方法用来检查对象中是否存在指定的属性(只检查实例属性)