七种数据类型
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.xxx
或 delete 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 obj
和 obj.hasOwnProperty(‘name’)
的区别
var obj = {name: 'ning', age: 25};
delete obj.name //删除obj的name
'name' in obj //false
obj.hasOwnProperty('name') //false
in关键字用来检查对象中是否存在指定的属性(包含实例属性和原型属性)
对象的hasOwnProperty方法用来检查对象中是否存在指定的属性(只检查实例属性)