The toString function is not generic; it throws a TypeError exception if its this value is not a Number or a Number object. Therefore, it cannot be transferred to other kinds of objects for use as a method.
Number.prototype.toString 可以作为函数调用但 this 一定要是 Number 类型。其他类型的 toString 同理。
b.call(123)
// "123"
The toString function is not generic; it throws a TypeError exception if its this value is not a Number or a Number object. Therefore, it cannot be transferred to other kinds of objects for use as a method.
Number.prototype.toString 标准
翻译一下后面的:
直接调用
this是window你可以这么用:
你可以
b.call(num),一般来说toString不允许作为普通函数执行很容易接受,就跟构造函数一般不作为普通函数执行一样。ps:例子中的
Number.prototype.toString()实际上作用域也是Number.prototype补充一下,答题有点离题了,b()实际上是作为函数调用的,也调用成功了,错误是toString()自身抛出来的。
Number.prototype.toString可以作为函数调用但 this 一定要是 Number 类型。其他类型的 toString 同理。15.7.4.2 Number.prototype.toString