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 相关文章推荐
细说javascript函数从函数的构成开始
Aug 29 Javascript
Jquery.addClass始终无效原因分析
Sep 08 Javascript
Javascript玩转继承(二)
May 08 Javascript
JQuery实现table行折叠效果以JSON做数据源
May 26 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
vue一步步实现alert功能
Jul 05 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
Jun 28 Javascript
vue兄弟组件传递数据的实例
Sep 06 Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php获取apk包信息的方法
2014/08/15 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JavaScript 作用域链解析
2014/11/13 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
浅谈js的异步执行
2016/10/18 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
Python中IPYTHON入门实例
2015/05/11 Python
12步教你理解Python装饰器
2016/02/25 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
巴西手表购物网站:eclock
2019/03/19 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
商得四方公司面试题(gid+)
2014/04/30 面试题
为什么要做架构设计
2015/07/08 面试题
如何提高MySql的安全性
2014/06/19 面试题
学术会议欢迎词
2014/01/09 职场文书
活动总结怎么写
2014/04/28 职场文书
专家推荐信范文
2015/03/26 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL