基本类型
- 字符串(String)
- 数字(Number)
- 布尔(Boolean)
- 对空(Null)
- 未定义(Undefined)
- Symbol
引用类型
- 对象(Object)
- 数组(Array)
- 函数(Function)
基本包装类型
var str = "hk"
console.log(str.charAt(0)) //"h"
这里的str是基本类型, 那这个str为何会调用方法呢? 这便引出了基本包装类型。
在基本类型中,有三个比较特殊的存在就是:String Number Boolean,这三个基本类型都有自己对应的包装对象
在实际中我们每读取一个基本数据值的时候,后台就会创建一个对应的基本包装类型对象,从而让我们能够调用一些方法操作这些数据
//当我们执行str.charAt(0)的时候实际发生了什么呢
(
var _str = new String("hk") // 自动调用方法,创建了对应的基本包装类型对象,
_str.charAt(0) // 将新建的基本包装类型对象调用其方法,返回给原来的值
—str = null // 销毁基本包装类型对象,所以我们无法给基本类型添加属性和方法
)
// 如果想要给基本属性添加数据和方法, 给基本包装对象的原型上添加属性和方法
String.prototype.my = "my"
引用类型和基本包装类型对象的区别: 生命周期不同
基本包装类型是只执行一行代码的瞬间之后就会立即销毁
专门封装原始类型的数据,并提供对数据常用操作的内置对象
内置对象
我们先来将js分成两大类,本地对象(JavaScript自己定义的对象)和所有非本地对象(宿主对象和自定义对象)
1. 本地对象,也叫原生对象,是ECMA官方定义好的对象, 是需要这些引用类型在运行过程中需要通过new来创建所需的实例对象
- Object、
- Function、
- String、
- Array、
- Boolean、
- Number、
- Date、
- RegExp、
- Promise、
- Map,
- XMLHttpRequest、
- Set
- Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError…
2. 内置对象,根据定义,所有内置对象都是本地对象, 内置对象不需要new,直接可以使用的
- global对象
- Math对象
- Json对象
- 函数中的arguments和event
- 宿主对象: 寄生对象,包括BOM和DOM对象, 自定义对象