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 相关文章推荐
使用jquery给input和textarea设定ie中的focus
May 29 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
Nov 10 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
实例分析js事件循环机制
Dec 13 Javascript
Vue结合后台导入导出Excel问题详解
Feb 19 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
Feb 21 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 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中redis的用法深入解析
2014/02/20 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
laravel自定义分页效果
2017/07/23 PHP
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
创建市级文明单位实施方案
2014/03/01 职场文书
会计岗位说明书
2014/07/29 职场文书
计划生育证明格式范本
2014/09/12 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Redis 哨兵机制及配置实现
2022/03/25 Redis
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android