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


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 相关文章推荐
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
mvc中form表单提交的三种方式(推荐)
Aug 10 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
Vue实现购物车功能
Apr 27 Javascript
JavaScript注册时密码强度校验代码
Jun 30 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
Dec 25 Javascript
vue实现图片上传预览功能
Dec 23 Javascript
JavaScript实现HSL拾色器
May 21 Javascript
express异步函数异常捕获示例详解
Nov 30 Javascript
JavaScript实现复选框全选功能
Apr 11 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 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与javascript实现变量交互的示例代码
2013/07/23 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
php array_map()函数实例用法
2021/03/03 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
<script defer> defer 是什么意思
2009/05/10 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
python实现的文件同步服务器实例
2015/06/02 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python 字典访问的三种方法小结
2019/12/05 Python
tensorflow的计算图总结
2020/01/12 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
超市业务员岗位职责
2013/12/05 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python