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


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 相关文章推荐
Javascript日期对象的dateAdd与dateDiff方法
Nov 18 Javascript
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 Javascript
Javascript限制网页只能在微信内置浏览器中访问
Nov 09 Javascript
JS+CSS实现六级网站导航主菜单效果
Sep 28 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
Node.Js中实现端口重用原理详解
May 03 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
May 14 Javascript
Vue实现导航栏的显示开关控制
Nov 01 Javascript
uni-app从安装到卸载的入门教程
May 15 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使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
JS location几个方法小姐
2008/07/09 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
大学自我鉴定
2013/12/20 职场文书
新文化运动的口号
2014/06/21 职场文书
小学老师对学生的评语
2014/12/29 职场文书
幽默导游词开场白
2015/05/29 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android