对象是属性和方法的集合,一个对象有属性,有方法。内建对象(string,boolean,array之类的)实质上是js中已经存在的对象,它们是js已经建好的、已经存在对象,也就是说这些对象的属性和方法都已经设定好了;在写程序是新建一个内建对象,实质上是新建了一个(js已经建好,内部存在)内建对象的实例。所以新建的对象的属性和方法都是已经设定好的,可以使用固定的语句去访问它的属性和方法。
JavaScript 提供多个内建对象:数字、字符串、日期、数组、逻辑运算符、算数、正则表达式. --记忆:数字日组 逻算正
基本类型(简单类型):Null、Undefined、Boolean、Number、String,Symbol(ES6新增)--记忆:两空一布数字符
引用类型(复杂类型): Function 、Object、Array、RegExp、Date --记忆:函对组 正则日期
全局数据类型:Math
关于typeof
typeof null; //object 无效
typeof undefined; //undefined 有效
typeof true; //boolean 有效
typeof 1; // number 有效
typeof ''; // string 有效
typeof Symbol(); // symbol 有效
typeof new Function(); // function 有效
typeof [] ; //object 无效
typeof new Date(); //object 无效
typeof new RegExp(); //object 无效
有些时候,typeof 操作符会返回一些令人迷惑但技术上却正确的值:
- 对于基本类型,除 null (object 类型)以外,均可以返回正确的结果。
- 对于引用类型,除 function(返回 function 类型) 以外,一律返回 object 类型。
总结: 无效的都返回对象
其中,null 有属于自己的数据类型 Null , 引用类型中的 数组、日期、正则 也都有属于自己的具体类型,而 typeof 对于这些类型的处理,只返回了处于其原型链最顶端的 Object 类型,没有错,但不是我们想要的结果。