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 动态文字滚动的例子
Jan 17 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
jquery中获得元素尺寸和坐标的方法整理
May 18 Javascript
原生js实现吸顶效果
Mar 13 Javascript
vue-cli配置环境变量的方法
Jul 09 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 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的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python中eval与int的区别浅析
2019/08/11 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
Django视图类型总结
2021/02/17 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
美德少年事迹材料
2014/01/23 职场文书
趣味运动会活动方案
2014/02/12 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
公司酒会致辞
2015/07/30 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL