JavaScript中的Primitive对象封装介绍


Posted in Javascript onDecember 31, 2014

JavaScript中,string、number、boolean均为primitive基本类型,也即字符串、数值、布尔值并不是以对象的形式而存在的。不过,由于需要对这三种primitive类型值进行操作,因此JavaScript会自动封装这三种类型的值,使其作为对象而拥有属性与方法。以string为例,这种封装过程如下:

1.当JavaScript遇到对string值进行属性访问或者方法调用时,会调用new String(字符串值)自动将该string封装成一个String对象。
2.JavaScript会访问这个新创建的对象的属性或者方法,并返回相应的结果。
3.属性访问或者方法调用结束后,JavaScript将立即销毁这个新创建的对象。

以下面的代码为例,对JavaScript自动创建的String对象进行属性写入操作没有任何意义,因为这个创建出来的对象在写入语句结束后就不复存在了:

var s = "test";

s.length = 9;

console.log(s.length);//still 4

s.newVariable = 9;

console.log(s.newVariable);//undefined

console.log(s === "test");//true

值得注意的是,上述代码中的s变量所表示的永远是primitive的字符串,JavaScript所自动创建的字符串对象存在于执行s.length或者s.newVariable操作的过程中。这可以从以上实验的最后一行代码中得到验证。

除了对Primitive值进行自动封装,开发人员也可以选择手动进行相应的过程。与自动封装不同的是,手动封装所得到的对象并不会被立即销毁,因此针对手动封装的对象所采取的属性写入操作是有意义的:

var t = new String("test");

t.length = 9;

console.log(t.length);//still 4, as length attribute is read only

t.newVariable = 9;

console.log(t.newVariable);//9
console.log(t == "test");//true

console.log(t === "test");//false
Javascript 相关文章推荐
JS delegate与live浅析
Dec 21 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
Feb 25 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
ES6概念 Symbol.keyFor()方法
Dec 25 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
vue组件Prop传递数据的实现示例
Aug 17 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
EasyUI Tree树组件无限循环的解决方法
Sep 27 Javascript
vue 页面加载进度条组件实例
Feb 05 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 Javascript
详解vue 图片上传功能
Apr 30 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
JavaScript中的值类型转换介绍
Dec 31 #Javascript
javascript实现滑动解锁功能
Dec 31 #Javascript
JavaScript中number转换成string介绍
Dec 31 #Javascript
JavaScript中string转换成number介绍
Dec 31 #Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 #Javascript
JavaScript中的object转换成number或string规则介绍
Dec 31 #Javascript
javascript 事件处理示例分享
Dec 31 #Javascript
You might like
php桌面中心(二) 数据库写入
2007/03/11 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python监控进程脚本
2018/04/12 Python
python中树与树的表示知识点总结
2019/09/14 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
学前教育教师求职自荐信
2013/09/22 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
合作协议书模板2014
2014/09/26 职场文书
养成教育主题班会
2015/08/13 职场文书
党组织结对共建协议书
2016/03/23 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL