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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
javascript实现面向对象类的功能书写技巧
Mar 07 Javascript
js读取本地excel文档数据的代码
Nov 11 Javascript
dojo随手记 gird组件引用
Feb 24 Javascript
关于js datetime的那点事
Nov 15 Javascript
javascript三元运算符用法实例
Apr 16 Javascript
Zabbix添加Node.js监控的方法
Oct 20 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
简单实现jQuery多选框功能
Jan 09 Javascript
Vue自定义图片懒加载指令v-lazyload详解
Dec 31 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 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 二维数组时间排序实现代码
2016/11/19 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
spyder常用快捷键(分享)
2017/07/19 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python写入已存在的excel数据实例
2018/05/03 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
原生python实现knn分类算法
2019/10/24 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
运动会广播稿100字
2014/01/11 职场文书
18岁生日感言
2014/01/12 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
2015年防汛工作总结
2015/05/15 职场文书
2015年党总支工作总结
2015/05/25 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android