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


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 回车事件实现代码
Aug 23 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
利用jQuery和CSS将背景图片拉伸
Oct 16 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
Js动态设置rem来实现移动端字体的自适应代码
Oct 14 Javascript
Angularjs中ng-repeat的简单实例
Aug 25 Javascript
js Element Traversal规范中的元素遍历方法
Apr 19 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 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的无限分类实现想法~
2007/01/02 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
早餐连锁店计划书
2014/01/08 职场文书
医院工作检讨书范文
2014/02/10 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书