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


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 相关文章推荐
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
jQuery 获取URL参数的插件
Mar 04 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
jQuery实现的进度条效果
Jul 15 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
微信小程序 实例应用(记账)详解
Sep 28 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
安装docker-compose的两种最简方法
2019/07/30 Python
详解Python高阶函数
2020/08/15 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
UDP协议功能
2013/01/06 面试题
企业新年寄语
2014/04/04 职场文书
学籍证明模板
2014/11/21 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL