资讯专栏INFORMATION COLUMN

JS中,在运算符下valueOf与toString的关系

HitenDev / 2427人阅读

摘要:先说结论运算操作时,对象的属性会先被调用,默认的属性会隐性地调用方法。

先说结论:运算操作(+|-|*|÷)时,对象的valueOf属性会先被调用,默认的valueOf属性会隐性地调用toString方法。

var a = {
        toString: function() {
                    console.log("in a.toString");
                    return "|_a->toString_|";
                },
                valueOf: function() {  
                    console.log("in a.valueOf");
                        return "|_a->valueOf_|";  
                    }
           };
alert(a);
//控制台->  in a.toString
//弹窗->  |_a->toString_|

结论1:alert方法只是多带带直接调用toString方法;

var a = {
        toString: function() {
                    console.log("in a.toString");
                    return "|_a->toString_|";
                },
                valueOf: function() {  
                    console.log("in a.valueOf");
                        return "|_a->valueOf_|";  
                    }
           };
""+a;
//控制台->  in a.valueOf
""-a;
//控制台->  in a.valueOf
""*a;
//控制台->  in a.valueOf
""/a;
//控制台->  in a.valueOf

结论2:运算符会调用对象的valueOf方法;

var a = {
 ///      toString: function() {
 //                console.log("in a.toString");
 //                   return "|_a->toString_|";
 //               },
          valueOf: function() {  
                      console.log("in a.valueOf");
                      return "|_a->valueOf_|";  
                  }
           };
""+a;
//控制台->  in b.valueOf
""-a;
//控制台->  in b.valueOf
""*a;
//控制台->  in b.valueOf
""/a;
//控制台->  in b.valueOf

结论3:操作符默认不会调用toString方法;

var a = {
        toString: function() {
                    console.log("in a.toString");
                    return "|_a->toString_|";
                },
///              valueOf: function() {  
//                  console.log("in a.valueOf");
//                  return "|_a->valueOf_|";  
//                  }
           };
""+a;
//控制台->  in b.toString
""-a;
//控制台->  in b.toString
""*a;
//控制台->  in b.toString
""/a;
//控制台->  in b.toString

结论4:默认的valueOf会调用toString方法;

总结:
alert():只调用toString
运算符:只调用valueOf
valueOf(默认):会调用valueOf

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89084.html

相关文章

  • JS{} + {}{} + []结果是什么?

    摘要:对于与的设计在中所设计的纯对象类型的与方法,它们的返回如下方法返回值对象本身。与三个强制转换函数,所对应的就是在标准中的三个内部运算转换的对照表。 在JS中的运算符共同的情况中,(+)符号是很常见的一种,它有以下的使用情况: 数字的加法运算,二元运算 字符串的连接运算,二元运算,最高优先 正号,一元运算,可延伸为强制转换其他类型的运算元为数字类型 当然,如果考虑多个符号一起使用时,...

    2json 评论0 收藏0
  • js比较算符隐式类型转换

    摘要:前言相信大家在代码中经常看见和,但大家真的弄懂了比较运算符和其中的隐式转换嘛今天就重新认识下比较运算符。 前言相信大家在代码中经常看见 == 和 ===,但大家真的弄懂了比较运算符和其中的隐式转换嘛? 今天就重新认识下比较运算符。 全等运算符 === 说明: 严格匹配,不会类型转换,必须要数据类型和值完全一致 先判断类型,如果类型不是同一类型的话直接为false; 1 对于基本数据类...

    lanffy 评论0 收藏0
  • 温故js系列(4)-算符详解

    摘要:一元运算符一元运算符只能操作一个值。逻辑非逻辑非参考数据判断逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。 前端学习:教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-前端资源汇总 欢迎提issues斧正:运算符 JavaScript-运算符 JavaScript 有一系列操作数据值的运算符,运算符按照特定运算规则对...

    王军 评论0 收藏0
  • javascript 总结(那些剪不断理还乱关系

    摘要:前言整理中一些相似的关键字方法概念。于是我们修改上面的函数来验证它们的区别小明撸代码撸代码小红小黑小刚小红小黑撸代码小李小谢小刚小李小谢撸代码那么与有什么区别呢与和不同的是,绑定后不会立即执行。通常用来处理一些并发的异步操作。 前言 整理 javascript 中一些相似的关键字、方法、概念。 1. var、function、let、const 命令的区别 使用var声明的变量,其作...

    hlcfan 评论0 收藏0

发表评论

0条评论

HitenDev

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<