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 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
HTML中事件触发列表与解说
Jul 09 Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 Javascript
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
在移动端使用vue-router和keep-alive的方法示例
Dec 02 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
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/01/18 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
python赋值操作方法分享
2013/03/23 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
python查询sqlite数据表的方法
2015/05/08 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
python实现k-means聚类算法
2018/02/23 Python
使用python模拟高斯分布例子
2019/12/09 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
python实现IOU计算案例
2020/04/12 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
UDP协议功能
2013/01/06 面试题
个人银行贷款担保书
2014/04/01 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
上班离岗检讨书
2014/09/10 职场文书
小学生差生评语
2014/12/29 职场文书
检讨书范文1000字
2015/01/28 职场文书
介绍信如何写
2015/01/31 职场文书
公务员年终个人总结
2015/02/12 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书