JS转换为基础类型

2019-02-11  本文已影响3人  一二三kkxx
输出对象先toString再valueOf

先调用toString,若返回基础类型,则输出

    var test = {
        toString:function () {
            console.log('toString');
            return 1;
        },
        valueOf:function () {
            console.log('valueOf');
            return 2;
        }
    }
    alert(test);   
    // toString
    // 弹出1

若toString返回的不是基础类型,则继续调用valueOf

    var test = {
        toString:function () {
            console.log('toString');
            return {};
        },
        valueOf:function () {
            console.log('valueOf');
            return 2;
        }
    }
    alert(test);   
    // toString
    // valueOf
    // 弹出2

若两者都返回非基础类型值,则抛出异常

    var test = {
        toString:function () {
            console.log('toString');
            return {};
        },
        valueOf:function () {
            console.log('valueOf');
            return {};
        }
    }
    alert(test);   
    // toString
    // valueOf
    // Uncaught TypeError: Cannot convert object to primitive value
参与运算先valueOf再toString

先调用valueOf,若返回基础类型,则进行运算

    var test = {
        toString:function () {
            console.log('toString');
            return 1;
        },
        valueOf:function () {
            console.log('valueOf');
            return 2;
        }
    }
    alert(test + 1);   
    // valueOf
    // 弹出3

若valueOf返回非基础类型,则继续调用toString

    var test = {
        toString:function () {
            console.log('toString');
            return 1;
        },
        valueOf:function () {
            console.log('valueOf');
            return {};
        }
    }
    alert(test + 1);  
    // valueOf 
    // toString
    // 弹出2

若两者返回均为非基础类型,则抛出异常

    var test = {
        toString:function () {
            console.log('toString');
            return {};
        },
        valueOf:function () {
            console.log('valueOf');
            return {};
        }
    }
    alert(test + 1);   
    // valueOf
    // toString
    // Uncaught TypeError: Cannot convert object to primitive value
应用
上一篇 下一篇

猜你喜欢

热点阅读