前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理解JavaScript的临时包装对象

理解JavaScript的临时包装对象

作者头像
寒月十八
发布2018-01-30 11:54:05
9140
发布2018-01-30 11:54:05
举报

Javascript语言中的对象和基础类型string、number、boolean都可以使用“.”符号访问属性和方法,但是本质上只有对象才可以使用“.”,那么基础类型在使用“.”时的内部机制是什么呢?

这里要引入一个概念:包装对象

Javascript对象是一个复合值,他是一组属性和方法的集合,使用“.”符号可以直接访问其属性和方法,但是基础类型数据在使用“.”符号时,*Javascript解析器首先调用基础类型对应的构造函数构建一个临时包装对象,然后再访问包装对象的属性。比如以下代码:

let str = 'string';
str.len = 4;
alert(str.len); //undefined

上述代码中第二行使用“.”为str变量赋值属性len,这时Javascript解析器首先调用构造函数:

let strObj = new String(str);
strObj.len = 4;

属性len的赋值对象实际是字符串对象strOb,而不是字符串值str。随后访问str.len返回值是undefined。strObj便称为包装对象,这个包装对象是临时的,一旦属性的引用和操作执行完毕后便会被回收,也就是说在strObj.len = 4执行完毕后,strObj便被回收,不可再次访问。

number和boolean值也有对应的构造函数Number()和Boolean()。

null和undefined没有包装对象,尝试使用“.”访问它们的属性会报错。

当然也可以手动创建基础类型对应的包装对象,有一点需要注意的是:包装对象和基础类型使用双等号==判断返回true,但是恒等号===返回false。开发过程中需要注意。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-11-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档