var s='this is a string';
alert(s.length);//16
alert(s.indexOf('is'));//2
值类型不是对象类型,但是也可以拥有属性和方法,当运行时,JS会隐式为相应代码添加对象,这种行为叫做包装对象
实例代码:
var str = 'hello';//此刻str为string基本类型,也不是一个对象
str.number=10;//但是这行代码可以执行,就是因为JS会隐式为此行代码添加string对象有的属性和方法,但是用完之后,立马销毁了,在基本类型的包装对象下面创建一个对象
console.log(str.number);//undefined
执行var str = 'hello';的时候是没有问题的,str就是一个基本类型
当执行str.number=10;的时候,这个基本类要添加一个属性,他就会去这
个基本类型所对应的包装对象下面创建一个对象,然后把这个10添加到对象下面
这行代码执行完毕之后,这个包装对象就消失了,
消失之后当我们再去调用str.number的时候,这个str.number又重新创建
一个包装对象,但是这个时候的对象和上一行代码的对象不是一个,现在形成的新的对象
下面是没有这个str.number的,所以找到是undefined
包装对象:在JavaScript中只要引用了字符串(数字、布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁。这个过程就叫包装对象
注意:我们显式创建的对象与JS自动隐式创建的对象是有区别的!
浏览器自己隐式创建的包装对象,是一个临时对象,在使用完后之后就会被抛弃了。