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


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 核心参考教程 内置对象
Oct 13 Javascript
javascript 跳转代码集合
Dec 03 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
javascript的原生方法获取数组中的最大(最小)值
Dec 19 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
Jul 12 Javascript
js网页右下角提示框实例
Oct 14 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 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制作静态网站的模板框架(二)
2006/10/09 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
实习生自我评价
2014/01/18 职场文书
《雪儿》教学反思
2014/04/17 职场文书
主题实践活动总结
2014/05/08 职场文书
党员志愿者活动方案
2014/08/28 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
python manim实现排序算法动画示例
2022/08/14 Python