window.toString=>function () { [native code] }window.toString()=>"[object Window]"原理是什么?
2 回答

繁花如伊
TA贡献2012条经验 获得超12个赞
它们是一样的哦。
不加括号的时候,你看到的返回结果是函数体本身。至于 [native code],可能是因为这些方法在底层的实现不是 Javascript 而是 C/C++ 之类的,所以浏览器是显示不出来的。另外,这个函数体实际上是 Object.prototype.toString
方法原型继承来的。
加括号的时候,你看到的是函数体求值(Evaluation)后的结果,toString
这个方法原本的功能就是返回一个字符串形式的对象表征,所以 window
这个对象显示结果为 [object Window]
就再正常不过啦!
注意,window
和 Window
首字母大小写不一样,后者是前者的构造函数,前者是后者的实例。
如果你对 [native code] 是什么真的很感兴趣,你可以去看这些浏览器(Google V8/Mozilla SpiderMonkey)的开源源代码,就能看到这些方法的底层实现了。BTW,这些实现基本上都是遵循标准的,较新的版本遵循的标准是 ECMAScript 5。也就是说,你也可以去看标准,里面有对每一个原生方法的实现描述(伪代码)。
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报
0/150
提交
取消