美文网首页
js中,进行强制类型转换时,对象的toString和valueO

js中,进行强制类型转换时,对象的toString和valueO

作者: they远去人海 | 来源:发表于2019-06-01 00:01 被阅读0次

以下所有的讨论都要满足一个条件,就是用户自己不自定义对象的toString方法和valueOf方法。
先预定义三个变量a,b,c。并修改它们的toString和valueOf方法

var a = new Number(123);
a.toString = function(){
    console.log('call a.toString');
    return new Number(123).toString();
};
a.valueOf = function(){
    console.log('call a.valueOf');
    return new Number(123).valueOf();
};

var b = new String('b-string');
b.toString = function(){
    console.log('call b.toString');
    return new String('b-string').toString();
};
b.valueOf = function(){
    console.log('call b.valueOf');
    return new String('b-string').valueOf();
};

var c = {}
c.toString = function(){
    console.log('call c.toString');
    return {}.toString();
};
c.valueOf = function(){
    console.log('call c.valueOf');
    return {}.valueOf();
};

当使用Number()进行强制类型转换时

var res = Number(a);//call a.valueOf
console.log(a);//123
var res = Number(b);//call b.valueOf
console.log(b);//NaN
var res = Number(c);/*call c.valueOf
                      call c.toString
*/            
console.log(c);//NaN

上面的代码说明,当使用Number()进行强制类型转换时,当参数为new Number()或者new String()时,调用valueOf函数;当参数为{ }时,先调用valueOf函数,再调用toString函数。


当使用String()进行强制类型转换时

var res = String(a);//call a.toString
console.log(res);//123
var res = String(b);//call b.toString
console.log(res);//b-string
var res = String(c);//call c.toString
console.log(res);//[object Object]

上面的代码说明,当使用String()进行强制类型转换时,对于new Number(),new String()和{ },都调用toString函数。

相关文章

  • js中,进行强制类型转换时,对象的toString和valueO

    以下所有的讨论都要满足一个条件,就是用户自己不自定义对象的toString方法和valueOf方法。先预定义三个变...

  • JavaScript 常见面试题分析(四)

    01 强制类型转换和隐式类型转换 强制:parseInt、parseFloat、toString隐式:if、逻辑运...

  • js的类型转换

    js类型转换 1 用于类型转换的valueOf和toString valueOf()的意义是,返回这个对象逻辑上对...

  • 2、强制数据类型转换

    数据类型转换: 在js中,数据类型的转换有两种,分别是自动转换和强制转换 自动转换: 自动转换是用JS进行某些操作...

  • JavaScript类型转换

    在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。 强制类型转换 即通过使...

  • JavaScript中的强制类型转换

    强制类型转换 将其他的数据类型转换成String 调用被转换类型的toString()方法null和undefin...

  • == 类型比较

    在JS中 两等的比较方式,不比较类型。会强制进行类型转换后进行比较,记录各种类型比较的转换过程。

  • 2018-06-13

    JS类型转换(强制和自动的规则) 显式转换 通过手动进行类型转换,Javascript提供了以下转型函数: 转换为...

  • Java多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时,j...

  • Java多态对象的类型转换

    这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时,j...

网友评论

      本文标题:js中,进行强制类型转换时,对象的toString和valueO

      本文链接:https://www.haomeiwen.com/subject/csyntctx.html