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 相关文章推荐
推荐:极酷右键菜单
Nov 29 Javascript
jQuery.extend 函数的详细用法
Jun 27 Javascript
Js动态添加复选框Checkbox的实例方法
Apr 08 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
jQuery使用deferreds串行多个ajax请求
Aug 22 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 Javascript
vue脚手架及vue-router基本使用
Apr 09 Javascript
Vuejs开发环境搭建及热更新【推荐】
Sep 07 Javascript
angular4+百分比进度显示插件用法示例
May 05 Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 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
DSP接收机前端设想
2021/03/02 无线电
php自动适应范围的分页代码
2008/08/05 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
Prototype Selector对象学习
2009/07/23 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python模拟Django框架实例
2016/05/17 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
机关门卫制度
2014/02/01 职场文书
不同意离婚代理词
2015/05/23 职场文书
青春雷锋观后感
2015/06/10 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
JS封装cavans多种滤镜组件
2022/02/15 Javascript