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


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捕获超链接事件进行局部刷新代码
May 10 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
使用js如何实现全选与全不选
Dec 30 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
Oct 15 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
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漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
一个漂亮的php验证码类(分享)
2013/08/06 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
python简单实现旋转图片的方法
2015/05/30 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
大专生自我鉴定范文
2013/10/01 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书