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


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 相关文章推荐
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
node.js的事件机制
Feb 08 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
Mar 21 Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
JavaScript中string对象
2015/06/12 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
python SOCKET编程基础入门
2021/02/27 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
应届护士推荐信
2013/11/16 职场文书
环保建议书
2014/03/12 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
土建技术员岗位职责
2015/04/11 职场文书
员工安全责任协议书
2016/03/22 职场文书
门面租赁合同范文
2019/08/06 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python