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 BASE64编码 window.atob(), window.btoa()
Mar 09 Javascript
如何用javascript控制上传文件的大小
Oct 26 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
Jul 12 Javascript
js实现select跳转功能代码
Oct 22 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
Jun 13 Javascript
js多个物体运动功能实例分析
Dec 20 Javascript
js实现常见的工具条效果
Mar 02 Javascript
JavaScript实现实时更新系统时间的实例代码
Apr 04 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
js实现超级玛丽小游戏
Mar 18 Javascript
JavaScript ES6 Class类实现原理详解
May 08 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 常用字符串函数总结
2008/03/15 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python输入多行字符串的方法总结
2019/07/02 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
keras的三种模型实现与区别说明
2020/07/03 Python
python爬虫工具例举说明
2020/11/30 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
迎新晚会邀请函
2014/02/01 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书