JavaScript 中 Number() 与 new Number() 区别

802 阅读1分钟

1-1 new Number()

当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象

1-2 Number()

当 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN ),相当于执行了 new Number().valueOf()

let a = Number(1) //相当于new Number(1).valueOf() 
console.log(a) // 1 

let b = new Number(1) 
console.log(b) // Number类型的对象{1}

1-3 valueOf()

  1. valueOf() 是 Object 的原型方法,定义在 Object.prototype 对象上,所有 Object 的实例对象都会继承 valueOf() 方法
  2. valueOf() 方法能够返回 Number 对象原始的值。
  3. JavaScript 自动类型转换时会默认调用 valueOf() 原型方法。Object 对象默认使用 valueOf() 方法返回值与 toString() 方法返回值相同,但是部分类型对象重写了 valueOf() 方法