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 对象成员的可见性说明
Oct 16 Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
Jan 21 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
jQuery实现倒计时功能完整示例
Jun 01 jQuery
小程序选项卡以及swiper套用(跨页面)
Jun 19 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+JS实现搜索自动提示(实例)
2013/06/09 PHP
浅谈php和.net的区别
2014/09/28 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
Python中实现switch功能实例解析
2018/01/11 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python爬取微信公众号文章的方法
2019/02/26 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
python 进程池pool使用详解
2020/10/15 Python
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
销售人员个人求职信
2013/09/26 职场文书
小学清明节活动方案
2014/03/08 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
介绍信的写法
2015/01/31 职场文书
2016年十一促销广告语
2016/01/28 职场文书