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 学习之旅 (1)
Feb 05 Javascript
一个网马的tips实现分析
Nov 28 Javascript
html组件不可输入(只读)同时任何组件都有效
Apr 01 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
Jul 18 Javascript
javascript弹出拖动窗口
Aug 11 Javascript
jquery实现弹出层登录和全屏层注册特效
Aug 28 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
js判断文件类型大小并给出提示的实现方法
Jan 03 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
Element Breadcrumb 面包屑的使用方法
Jul 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
总结对比php中的多种序列化
2016/08/28 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
JavaScript File分段上传
2016/03/10 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python基于event实现线程间通信控制
2020/01/13 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
亲子拓展活动方案
2014/02/20 职场文书
社区娱乐活动方案
2014/08/21 职场文书
爱牙日活动总结
2014/08/29 职场文书
小爸爸观后感
2015/06/15 职场文书
婚礼家长致辞
2015/07/27 职场文书
python自动化测试之Selenium详解
2022/03/13 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL