要理解 JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。
JavaScript中的数据很简洁的。简单数据只有#ff0000, null, boolean, number和string这五种,
而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火
土,其他复杂的物质都是由这五种基本元素组成。
JavaScript中的代码只体现为一种形式,就是function。
注意:以上单词都是小写的,不要和Number, String, Object, Function等JavaScript内置函数
混淆了。要知道,JavaScript语言是区分大小写的呀!
任何一个 JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, o
bject和 function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了。
先说说简单数据类型吧。
undefined:代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。
注意:typeof(undefined)返回也是 undefined。可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。
null:有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码
来处理了。
注意:typeof(null)返回object,但null并非object,具有null值的变量也并非obj
ect。
boolean:是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控
制代码的流程。
number:线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代
和循环等。
注意:typeof(NaN)和typeof(Infinity)都返回number。NaN参与任何数值计算的结构都是NaN,而且NaN != NaN。Infinity / Infinity = NaN。
string:面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人的意图等等,
都靠它了。
简单类型都不是对象,JavaScript没有将对象化的能力赋予这些简单类型。直接被赋予简单类型常量值的标识符、变量和参数都不是一个对象。
所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。JavaScript中只有object类型和fun
ction类型提供了对象化的能力。
没有类,object就是对象的类型。在JavaScript中不管多么复杂的数据和代码,都可以组织成object形式的对象。