在了解了七种数据类型,分别是:
number string bool symbol
null undefined
object
object作为七种数据类型,唯一一种复杂的类型,需要单独学习~
对象 0bject
让我们先来了解一下什么是对象
·无序的数据组合
·键值的写法
一、声明对象的两种方法
let obj = { 'name' : 'frank', 'age' : 18 }
let obj = new Object ({ 'name' : 'frank'} ) //正规写法
console.log({'name':'frank','age':18})
细节
上述代码 name、age是一个键名 frank是一个键值
·键名是字符串 不是标识符 可以包含任意的字符
·可以把单引号省略 省略之后只能写标识符
·就算引号省略了,键名依旧是字符串
1、属性名 属性值
每个可以都是对象的属性名 name 就是属性名
每个value都是对象的属性值 frank就是属性值
2、奇怪的属性名
所有的属性名都会变成字符串
let obj = {
1: 'a',
3.2: 'b',
1e2: true, 不加''就会变成 100
1e-2: true, 不加''就会变成0.01
.234: true, 会变成0.234
0xFF: true 会变成16进制
};
Object.keys(obj);
**只有加了引号 才不会出现这种情况
**
Object.keys(obj); //可以得到所有obj的key
3、如何用变量做属性名
之前都是用常量做属性名(只要不是变量就都是常量
let p1 = 'name'
let obj = { p1 : 'frank'} //这样写,属性名为 'p1'
let obj = { [p1] : 'frank' } //这样写,属性名为 'name'
对比
不加 [ ] 的属性名会自动变成字符串
加了 [ ] 则会当做变量求值
值如果不是字符串,则会自动变成字符串
5、对象的隐藏属性
隐藏属性
JS 中每一个对象都有一个隐藏属性
这个隐藏属性储存着其共有属性组成的对象的地址
这个共有属性组成的对象叫做原型
也就是说,隐藏属性储存着原型的地址
如上图:不是409是原型, 409是对象的地址,409所代表的这一块内存,是这个obj对象的原型
二、删除属性
delete obj.xxx 或 delete obj['xxx']
·可删除obj的xxx属性
·请区分**「属性值为 undefined」和「不含属性名」**
undefined只删除值,delete删除值和属性