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


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中获取id值方法小结
Sep 22 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
学JavaScript七大注意事项【必看】
May 04 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
May 18 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
vue axios 二次封装的示例代码
Dec 08 Javascript
webpack 样式加载的实现原理
Jun 12 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
Sep 10 Javascript
Ant design vue中的联动选择取消操作
Oct 31 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php 日期时间处理函数小结
2009/12/18 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
js倒计时显示实例
2016/12/11 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
jQuery操作cookie的示例代码
2019/06/05 jQuery
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python线性回归实战分析
2018/02/01 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
路政管理专业推荐信
2013/11/11 职场文书
大学活动邀请函
2014/01/28 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android