zoukankan      html  css  js  c++  java
  • javascript 中关于对象转换数字值的一些特点

    下面是摘至<Javascript 高级程序设计第三版>里的一段话

    是关于对象转换数字值的一些规则

    "在应用于对象时,先调用对象的valueOf()方法以取得一个可供操作的值。然后对该值应用前述规则。如果结果是NaN,则在调用toString()方法后再应用前述规则...."

    通过上面的描述,我们知道,当需要把对象转换成数字值时,先调用valueOf方法,假如返回NaN,则再调用对象的toString方法。

    所以写了下面的测试代码.

    var a={
    	valueOf:function(){
    		return "admin";
    	},
    	toString:function(){
    		return "2";
    	}
    }
    
    var b={
    	toString:function(){
    		return "2";
    	}
    }
    
    var c={
    	valueOf:function(){
    		return "4";
    	}
    }
    
    console.log(+a); // print NaN
    console.log(+b); // print 2
    console.log(+c); // print 4
    

      经测试发现,只要valueOf和toString方法同时存在的时候,只会按valueOf的返回值来转换数字值,哪怕toString方法可以返回数字,结果也是NaN

    ,测试的浏览器信息为

    Google Chrome 31.0.1650.63 (正式版本 238485m
    操作系统 Windows 
    Blink
    JavaScript V8 3.21.18.13

    不知道这是不是chrome的一个改进,还是什么,特记录下来,方便给别人参考。

  • 相关阅读:
    ipmitool常用命令
    linux系统/var/log目录下的信息详解
    查看vnc server的日志
    Hp服务器 iLO3 使用方法
    phalcon builder 用法
    cobbler pxe-menu
    几种session存储方式比较
    parse arguments in bash
    No breeds found in the signature, a signature update is recommended
    Mybatis-plus使用分页进行分页查询
  • 原文地址:https://www.cnblogs.com/xuwenmin888/p/3463766.html
Copyright © 2011-2022 走看看