javascript中三种基本数据类型的特殊之处
jarry
posted @ 2009年9月30日 00:34
in 未分类
, 2654 阅读
起这么一个标题似乎有点吸引眼球的嫌疑,其实就是js中三种基本类型的对象操作时的特殊性,我们知道在javascript中有三种基本数据类型分别是number,string,boolean,此外他们还分别有各自的对象包装类型Number、String、Boolean,如果我们对Boolean型的数据,我是说Boolean对象进行toString()等对象操作时是可以的:
alert(new Boolean(true).toString());
那如果用直接量呢?
alert(true.toString());
也是可以的,但是true并不是一个对象,它只是一种基本数据类型,这在java等强类型语言中是绝对不允许的,js中之所以可以是因为true.toString()的时候创建了一个Boolean类型的对象。类似的'sss'.toString(); 1..toString();都是一样的。以下是验证:
Number.prototype.param1 = 'number param1'; String.prototype.param1 = 'string param1'; Boolean.prototype.param1 = 'boolean param1'; alert(1..param1); alert(''.param1); alert(true.param1); alert(1..constructor); alert(''.constructor); alert(true.constructor);
对于1..toString()这种写法请见js中数字字面量的constructor