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
Prototype Date对象 学习
Jul 12 Javascript
限制文本框输入N个字符的js代码
May 13 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
再谈javascript注入 黑客必备!
Sep 14 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
详解Vue 多级组件透传新方法provide/inject
May 09 Javascript
angularjs性能优化的方法
Sep 05 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 Javascript
微信小程序开发常见问题及解决方案
Jul 11 Javascript
JavaScript this关键字指向常用情况解析
Sep 02 Javascript
JavaScript 几种循环方式以及模块化的总结
Sep 03 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
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
php实现word转html的方法
2016/01/22 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
JavaScript事件委托技术实例分析
2015/02/06 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
PHP面试题集
2016/12/18 面试题
error和exception有什么区别
2012/10/02 面试题
幼儿园托班开学寄语
2014/01/18 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书