美文网首页
Object.prototype.valueOf

Object.prototype.valueOf

作者: 木安小学生 | 来源:发表于2019-03-21 10:27 被阅读0次

    【问题】:下面代码中 a 在什么情况下会打印 1 ?

    var a = ?
    if(a==1 && a==2 && a==3){
      console.log(1)
    }
    

    【答案】: 改写对象 a 的valueOf 方法

    var a = {
      b:1,
      valueOf(){
        return this.b++
      }
    }
    

    Object.prototype.valueOf 返回指定对象的原始值

    JavaScript调用valueOf方法将对象转换为原始值。你很少需要自己调用valueOf方法;当遇到要预期的原始值的对象时,JavaScript会自动调用它。

    var b = {a:1}
    b.valueOf()     // {a:1}
    

    默认情况下,valueOf方法由Object后面的每个对象继承。 每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始值,则valueOf将返回对象本身。

    JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同。

    对象 返回值
    Array 返回数组对象本身
    Boolean 布尔值
    Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
    Function 函数本身
    Object 对象本身。这是默认情况。
    String 字符串值
    Math 和 Error 对象没有 valueOf 方法

    相关文章

      网友评论

          本文标题:Object.prototype.valueOf

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