对象转换为原始值的实现方法


Posted in Javascript onJune 06, 2016

首先,我们要明白原始值得概念

原始值

存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。

引用值

存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处

————引用了w3c里的概念

原始值,简单点理解就是 null  undefined string number Boolean 这些

对象转换为boolean相对简单

所有的对象(包括数组和函数)都转换成true,包装对象从也是对象,也转换为true

书上是这么说的  “存取字符串,数字和布尔值的属性时创建的临时对象称之为包装对象”,我是这么理解的,new出来的string啊,number啊,boolean啊都算作包装对象,他有别于对象,但它确实是个对象,最主要的区别就是不能给包装对象定义新的属性,因为string number Boolean的属性是只读的。

对象转换为string类型

如果 对象具有toString()方法,就调用toString()的方法,如果返回一个原始值,就把这个原始值转换成字符串,对象就转换成这个字符串,如果不具有toString()方法或者这个方法返回的值不是一个原始值,那么就调用valueOf()方法,同样的套路,如果返回的是一个原始值,就把这个原始值转换成字符串,那么对象也就转换成了这个字符串了,如果返回的不是一个原始值,就抛出一个类型转换的错误。

这里的toString()方法和valueOf()方法就不一一赘述了,

对象转换为number类型

相比较转换成string,转换number的过程,正好的与其相反,先调用valueOf()方法,再调用toString()方法,最后toString()方法返回的不是一个原始值是,js就抛出一个错误。

当使用"=="和"+"运算符进行数字的计算或者字符串的拼接时,如果运算符的一侧是对象,将使用特殊的对象转换为原始值的方法。对于非日期对象,对象转换成原始值就是

对象先调用valueOf()方法,再调用tostring()方法,并将通过调用这两个方法得到的原始值直接作为对象转换成的原始值,对于日期对象来说,先调用toString()方法,再调用valueOf方法。

对于日期对象转换成原始值,举个例子吧

 

var now=new Date(); 
typeOf(now+1);     //"string" 将日期对象转换成了字符串,因为先调用的是toString()方法 
typeOf(now-1);      //"number" 体现了js的灵活性,"-"将字符串转换线成了number

以上这篇对象转换为原始值的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype使用指南之hash.js
Jan 10 Javascript
js添加table的行和列 具体实现方法
Jul 22 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
JavaScript简单获取系统当前时间完整示例
Aug 02 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 Javascript
Vue 实例事件简单示例
Sep 19 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 #Javascript
node-http-proxy修改响应结果实例代码
Jun 06 #Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 #Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 #Javascript
jquery插件方式实现table查询功能的简单实例
Jun 06 #Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 #Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 #Javascript
You might like
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
JavaScript中this详解
2015/09/01 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
应届大学生的推荐信
2013/11/20 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
中国梦口号
2014/06/13 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
药店营业员岗位职责
2015/04/14 职场文书
妈妈别哭观后感
2015/06/08 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Spring中的@Transactional的工作原理
2022/06/05 Java/Android