首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

犀牛书札记:(4)null,undefined Error object, wrapper and Primitive and Object

2012-09-12 
犀牛书笔记:(4)null,undefined Error object, wrapper and Primitive and Objectnull是object的一种特殊类

犀牛书笔记:(4)null,undefined Error object, wrapper and Primitive and Object

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()方法。

?

?

?

?

热点排行