例子1:
var s="test";s.len = 4;var t = s.len // t is undefined
原因是s是字符串,第二行代码,实际上是创建一个临时字符串变量,并给其len属性赋值为4,第三行代码通过原始的字符串值创建一个新的字符串对象,然后再去读len属性,当然就没有了啦。
例子2:
var s ="hello,world";var word = s.substring(6,s.length);//"word"
字符串不是对象,怎么会有属性呢?只要引用了字符串s的属性,Javascript就会将字符串值通过调用new Sring(s)的方式转化成对象,这个对象继承了字符创的方法。
例子3:
var s = new String("javascript");var len = s.length; //len = 10
这个属性显式地new了一个对象实例。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
存取字符串,数字或者布尔值的属性时创建的临时对象称作包装对象,可以通过String(),Number()或Boolean()构造函数来显式创建包装对象。var s = "test"; n = 1; b = true;
var S = new String(s);var N = new Number(n);var B = new Boolean(b);s == S; //truen == N; //trueb == B; //trues === S; //falsen === N; //falseb === B; //false typeof(s) //"string"typeof(S) //"object"typeof(n) //"number"typeof(N) //"object"typeof(b) //"boolean"typeof(B) //"object"
Javascript会在必要时将包装对象转化成原始值。“==”等于运算符就将原始值和其包装对象看成相等,但“===”就得比较是否相同类型,相同值才行。