isNaN判断对象逻辑

58 阅读1分钟

1. 调用对象的valueOf方法,并将值转为Number, 是数值则为false,否则为true 2. 上一步判断为true时,调用对象的toString方法,并将值转为Number,是数值则为false,否则为true

  • 验证第一步:
function TestNumber(){}

TestNumber.prototype.valueOf = ()=> ''

let a = new TestNumber()

isNaN(a) // false

TestNumber.prototype.valueOf = ()=> 'xxx'

let b = new TestNumber()

isNaN(b) // true

image.png

  • 第二步同理,略。。