我知道根据 ECMAScript 规范,非严格方法会将thisArg转换为全局对象,如果null
或被undefined
传递给它们。这就是此代码记录窗口对象(在浏览器中)而不是 null 的原因:
function x() {
console.log(this);
}
x.call(null);
我不明白的是,为什么用Object.prototype.toString.call(null)
, 做同样的事情不会转换null
为全局对象,而是保持原样null
并返回字符串[object Null]
。
是因为在方法'use strict'
的默认实现中使用了toString
?每个内置方法都在严格模式下运行吗?
我在规范中找不到类似的东西https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.prototype.tostring。