为了账号安全,请及时绑定邮箱和手机立即绑定

JS toString 和toString()有什么区别?

JS toString 和toString()有什么区别?

烙印99 2019-04-08 11:19:00
window.toString=>function(){[nativecode]}window.toString()=>"[objectWindow]"原理是什么?
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

它们是一样的哦。
不加括号的时候,你看到的返回结果是函数体本身。至于[nativecode],可能是因为这些方法在底层的实现不是Javascript而是C/C++之类的,所以浏览器是显示不出来的。另外,这个函数体实际上是Object.prototype.toString方法原型继承来的。
加括号的时候,你看到的是函数体求值(Evaluation)后的结果,toString这个方法原本的功能就是返回一个字符串形式的对象表征,所以window这个对象显示结果为[objectWindow]就再正常不过啦!
注意,window和Window首字母大小写不一样,后者是前者的构造函数,前者是后者的实例。
如果你对[nativecode]是什么真的很感兴趣,你可以去看这些浏览器(GoogleV8/MozillaSpiderMonkey)的开源源代码,就能看到这些方法的底层实现了。BTW,这些实现基本上都是遵循标准的,较新的版本遵循的标准是ECMAScript5。也就是说,你也可以去看标准,里面有对每一个原生方法的实现描述(伪代码)。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 377 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信