Firefox 的 js 引擎/gjs (spidermonkey) 和 webkit 的 jscore 在非对象上调用内置和普通 js 函数时似乎有不同的行为。
gjs> toString.call(null)
"[object Null]"
gjs> function cccc() {return toString.call(this);}
gjs> cccc.call(null)
"[object GjsGlobal]"
因此,如果使用非对象调用普通的 js 函数,它this
会自动被 current 替换this
,而对于内置函数则不会发生这种情况。
这是标准行为(根据某些规范?)还是只是依赖于实现的行为?第一行检查任何值的类型总是安全的吗?
谢谢