javascript为什么字符串直接量可以使用属性和方法
分类:实例代码
在分析标题中的问题之前先来看一段代码实例:
var str="pipipi.net"; console.log(str.length);
如果不深究,那么上面的代码实在是太普通不过了,但是细致看来,可能有不少朋友有这样的疑问,那就是为什么字符串直接量可以使用属性或者方法,不是只有对象才可能吗,下面就介绍一下其中的原理:
当字符串直接量调用属性或者方法的时候,javascript会隐式将字符串直接量转换为对象,也就相当于执行了如下操作:
var str="pipipi.net"; var str=new String(str) console.log(str.length);
特别说明:隐式转换创建的是一个临时对象,一旦属性或者方法引用结束,这个新创建的对象就会被销毁(在javascript的内部具体是否真正创建了临时对象或者销毁临时对象不得而知,这里不深究了,从表现来看确实如此)。对于其他的布尔值或者数字也是一样的道理。再来看一段代码实例:
var str="pipipi.net"; str.len=15; console.log(str.len);
上面代码输出是undefined,因为临时对象在调用属性之后就自动销毁了。
代码修改如下:
var str="pipipi.net"; var str=new String(str); str.len=15; console.log(str.len);
上面的代码没有任何问题,因为这里确确实实创建一个对象。