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 相关文章推荐
原生js写的放大镜效果
Aug 22 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
jquery跟随屏幕滚动效果的实现代码
Apr 13 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
Angular中使用MathJax遇到的一些问题
Dec 15 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
详解微信小程序调起键盘性能优化
Jul 24 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 Javascript
Vuex中实现数据状态查询与更改
Nov 08 Javascript
原生js实现瀑布流效果
Mar 09 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过滤XSS攻击的函数
2013/11/12 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
What is EJB
2016/07/22 面试题
JAVA软件工程师测试题
2014/07/25 面试题
大学生收银员求职信分享
2014/01/02 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
介绍信格式
2015/01/30 职场文书
交通处罚决定书
2015/06/24 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers