什么是包装对象?
JavaScript中只要引用了字符串(数字、布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起来是这样)。这个过程就叫包装对象。
我们来看段代码:
|
|
以上代码平淡无奇,但是我们仔细想一下,str是字符串,字符串类型的变量怎么会有方法呢?同理像number和boolean也一样,为什么基本类型的变量会有方法呢?
原因就是包装对象,这是我们再阅读一下什么是包装对象。
|
|
我们发现:基本类型(string、number、boolean)z这三个有对应的包装对象。null和undefined也是基本类型,但是没有对应的包装对象。
我们回过头来再看上面第一个例子:
|
|
那么我么想要给字符串添加一个方法怎么办呢?
|
|
我们再往下看
|
|
咦?怎么是undefined?
答案还是因为包装对象。
str是我们隐式地创建的包装对象,在使用完之后就被抛弃了。
str.number=10这时候创建一个包装对象,赋值。
执行到console.log(str.number)这句话的时候,之前的包装对象已经被抛弃,我们打点调用num的时候,又重新创建一个包装对象,所以此时这个包装对象一定没有num属性,故输出undefined。
那么我们一定要输出str.num呢?
|
|
我们再看一个现象
|
|
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid/JavaScript/package-object.html
欢迎转载,转载请注明文本链接