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


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 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
Jquery 获取checkbox的checked问题
Nov 16 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
浅谈html转义及防止javascript注入攻击的方法
Dec 04 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
微信小程序slider组件使用详解
Jan 31 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
canvas 中如何实现物体的框选
Aug 05 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图片上传存储源码并且可以预览
2011/08/26 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
js表格分页实现代码
2009/09/18 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
javascript 闭包疑问
2010/12/30 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
numpy数组拼接简单示例
2017/12/15 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Django 路由控制的实现
2019/07/17 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
不拖欠农民工工资承诺书
2014/03/31 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
医药销售自荐书
2014/05/29 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
2014年党员整改措施
2014/10/24 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
发布会邀请函
2015/01/31 职场文书
现役军人家属慰问信
2015/03/24 职场文书
爱护公物主题班会
2015/08/17 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL