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

 更新时间:2016年06月06日 09:27:58   投稿:jingxian  
下面小编就为大家带来一篇对象转换为原始值的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

首先,我们要明白原始值得概念

原始值

存储在栈(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 

以上这篇对象转换为原始值的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • js创建jsonArray传输至后台及后台全面解析

    js创建jsonArray传输至后台及后台全面解析

    下面小编就为大家带来一篇js创建jsonArray传输至后台及后台全面解析。小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-04-04
  • 什么是JavaScript

    什么是JavaScript

    JavaScript是一种基于对象和事件驱动的客户端脚本语言。JavaScript最初的设计是为了检验HTML表单输入的正确性。javaScript起源于Netscape公司的LiveScript语言。
    2009-08-08
  • Javascript中的关键字和保留字整理

    Javascript中的关键字和保留字整理

    ECMA-262中描述了一组具有特定用途的关键字,关键字属于语言保留,不可以用于标示符,学习js的朋友可以看看
    2014-10-10
  • 浅谈JavaScript Array对象

    浅谈JavaScript Array对象

    这篇文章主要介绍了JavaScript Array对象的相关资料,需要的朋友可以参考下
    2014-12-12
  • jQuery Mobile 和 Kendo UI 的比较

    jQuery Mobile 和 Kendo UI 的比较

    这篇文章主要介绍了jQuery Mobile 和 Kendo UI 的比较,需要的朋友可以参考下
    2016-05-05
  • javascript异步编程的4种方法

    javascript异步编程的4种方法

    本文总结了"异步模式"编程的4种方法,理解它们可以让你写出结构更合理、性能更出色、维护更方便的Javascript程序
    2014-02-02
  • 使用JavaScript 实现各种跨域的方法

    使用JavaScript 实现各种跨域的方法

    本篇文章是对在JavaScript中实现各种跨域方法的介绍。需要的朋友参考下
    2013-05-05
  • JavaScript多线程运行库Nexus.js详解

    JavaScript多线程运行库Nexus.js详解

    这篇文章主要介绍了JavaScript多线程运行库Nexus.js的学习心得以及代码分享,有需要的朋友一起参考学习下吧。
    2017-12-12
  • JavaScript学习笔记之Function对象

    JavaScript学习笔记之Function对象

    这篇文章主要介绍了JavaScript学习笔记之Function对象的相关资料,需要的朋友可以参考下
    2015-01-01
  • Javascript OOP之面向对象

    Javascript OOP之面向对象

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。
    2016-07-07

最新评论