(1)对象:
在js中由各种属性名称以及属性名称对应的值合成的一个无序的合集
创建对象:
new操作符 ;
字面量{};
Object.create({实例的隐式原型所指对象} )
(2)对象的分类:
① 内部对象: 本地对象和内置对象,
- 本地对象 ,需要new实例化;如:
Object、Function、Array、String、Boolean、Number、Date、RegExp、
Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
(8个常用对象+7个错误对象) - 内置对象,不需要new实例化就能使用的对象:全局对象 Math JSON
② 宿主对象: 浏览器提供的对象。所有的BOM和DOM都是宿主对象。
③ 定义对象 : 开发人员自己定义的对象
(3)访问对象
点 : obj.k
方括号 : obj[变量]
(4)为什么数字 字符串 boolean值(原始类型)可以调用方法?
因为在js解释器中,遇到 “.” 则先判断”.”前是不是对象:
- 是 , 则调用属性;
- 不是 , 则将前面的变量转为对象,再调用属性;
- 转换失败,报错
(5)为什么typeof null 为’object’?
早期开发的bug;
程序中的all变量肯定都是保存在内存中,all的数据保存在内存中都是使用二进制的形式, js 中的变量,若对应的二进制前三位为0,则typeof 为’object’,而null的二进制全为0 ;
因为这个bug, es中添加了undefined 类型表示空.