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


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 相关文章推荐
js移除事件 js绑定事件实例应用
Nov 28 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 Javascript
使用JavaScript保存文本文件到本地的两种方法
Jan 22 Javascript
react中Suspense的使用详解
Sep 01 Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 Javascript
JS实现网站吸顶条
Jan 08 Javascript
JS实现拖动模糊框特效
Aug 25 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
德生9700DX电路分析
2021/03/02 无线电
基于mysql的论坛(1)
2006/10/09 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python 连连看连接算法
2008/11/22 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
python简单操作excle的方法
2018/09/12 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
医院标语大全
2014/06/23 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
教学督导岗位职责
2015/04/10 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书