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中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
js获取浏览器基本信息大全
Nov 27 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
基于vue开发的在线付费课程应用过程
Jan 25 Javascript
使用vue + less 实现简单换肤功能的示例
Feb 21 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 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
CI框架数据库查询之join用法分析
2016/05/18 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python有序字典简单实现方法示例
2017/09/28 Python
django中的setting最佳配置小结
2017/11/21 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
《谁的本领大》教后反思
2014/04/25 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
三八妇女节标语
2014/10/09 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js