再总结一下JavaScript的数据类型:原始类型和引用类型
- 原始类型:数字、字符串、布尔值、null、undefined
- 引用类型:不是原始类型的都是引用类型,比如:数组、函数、对象
原始类型和引用类型的区别:原始值直接存放在变量之中,引用类型是在内存中的其他地方存放着数据,而在变量中放的是这片内存的地址。
我们现在来具体讨论怎么将一个对象转换为原始值
- 对象转换为布尔值:对象到布尔值的转换是非常简单的,所有对象(包括数组和函数)都转换为true。对于包装对象也是如此:new Bolean(false)是一个对象而不是原始值,它将转换为true。
- 对象转换为字符串:如果对象有toString()方法,则调用这个方法。如果它返回一个原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果;如果对象没有toString()方法,或者这个方法不是返回一个原始值,那么JavaScript会调用valueOf()方法,如果存在这个方法,则JavaScript调用它。如果返回一个原始值,JavaScript将他转换为字符串(如果本身不是字符串的话);如果这两种方法都不存在的话,就抛出类型错误异常。
- 对象转换为数字(首先使用valueOf()方法):如果对象有valueOf()方法,则调用这个方法。如果它返回一个原始值,JavaScript将这个值转换为数字,并返回这个数字;