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编程起步(第三课)
Feb 27 Javascript
有趣的javascript数组定义方法
Sep 10 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
window.location.hash知识汇总
Nov 09 Javascript
分享JavaScript与Java中MD5使用两个例子
Dec 23 Javascript
vue.js之vue-cli脚手架的搭建详解
May 05 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
Mar 29 Javascript
深入解析koa之中间件流程控制
Jun 17 Javascript
openlayers4实现点动态扩散
Aug 17 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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
python是怎么被发明的
2020/06/15 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
大学生入党思想汇报
2014/01/14 职场文书
关于人生的感言
2014/01/17 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
七年级话题作文之执着
2019/11/19 职场文书
Python基础之元编程知识总结
2021/05/23 Python
pycharm代码删除恢复的方法
2021/06/26 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python