null是object的一种特殊类型,在boolean语境下,传唤为false,在numeric语境下,转换为0,在string语境下,转换为null.
返回undefined有以下几种情况:使用一个已声明但从未赋值的对象。或一个并不存在的对象的属性。
尽管null和undefined是不同的,但用==判断时,可以得到true的结果,比如my有一个不存在的属性prop,
my.prop == null 返回true。
另一点需要注意的是,和null不同的是,Undefined不是保留字。在很多js实现中,你可以声明一个变量为
var undefined;
当undefined用于boolean语境中,转换为false, 用于Numeric语境中,转换为NaN,用于string语境中,转换为"undefined"。
Date,
var now = new Date();
//Date month is zero-based.
var xmas = new Date(2006, 11, 25);
Error objects
每个错误对象包含一个message属性
包装类(Number, String and Boolean)
当元类型在object语境中使用时,包装类就被自动创建了。
var len = s.length,在这个例子中,s的值并没有改变,而是新创建了一个透明的包装类对象,当访问完毕后,该对象被抛弃。
当然也可以显示的创建包装类对象如:
var S = new String("hello"); //包装类类型
var s = "hello" //元数据类型
alert(typeof(S));//object
alert(typeof(s));//string
任何元数据类型可以通过object转换为对应的包装类型:
var number_wrapper = Object(3); //注意没有new!
在很多时候,+,<,<=等运算符同时适用于字符串和数字,JS将首先尝试调用对象的valueOf()方法,如果该方法返回一个元数据类型,就是用该类型,如果返回的是一个对象,就调用toString()方法,转换为字符串。
例外的是Date类型,它同时实现了valueOf()和toString().当对Date对象使用+运算时,调用的是toString()方法。