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

new运算符的操作结果跟视频不一样

new运算符的操作结果跟视频不一样
这是视频截图

http://img1.sycdn.imooc.com//59056a4f0001c77306760340.jpg


使用的猎豹浏览器测试, 按视频中说使用chrome可以检测_proto_?
http://img1.sycdn.imooc.com//5904c983000107ed05690290.jpg
为什么console.log(obj._proto_.hasOwnProperty('x')); 显示undefined?


正在回答

3 回答

http://img1.sycdn.imooc.com//590570d000013e7505320277.jpg如图示

1 回复 有任何疑惑可以回复我~
#1

12只怕有心人 提问者

赞一个
2017-05-02 回复 有任何疑惑可以回复我~

明明就是"_proto_"写错了导致的!正确的是 __proto__

3 回复 有任何疑惑可以回复我~

Foo()作为原型里面只有你预设的一个x属性   你之后的obj是作为它的一个实例出现 也就是说 你obj.y这个属性只附给了obj 你的Foo原型上并不存在y这个属性 你的obj_proto_.hasOwnProperty('y')其实就是等价于 Foo.hasOwnProperty('y')   因为Foo上不存在这个属性 所以你的console显示出来结果是在找一个不存在的属性  即返回  undefined

0 回复 有任何疑惑可以回复我~
#1

12只怕有心人 提问者

谢谢 为什么console.log(obj._proto_.hasOwnProperty('x')); 也显示undefined, 但视频中能返回true?
2017-04-30 回复 有任何疑惑可以回复我~
#2

五更人_ 回复 12只怕有心人 提问者

恩 我刚才去自己跑了一遍代码 我找到原因了 我之前说的也有些不对 正常情况下四条console.log的结果应该是 false true true false Foo上不存在y属性仍旧会返回false值的 我用了Chrome 和火狐 还有IE分别测试了 这个应该是兼容性问题 IE10之下的版本对 obj._proto_.hasOwnProperty 这条代码是无法解读的 猎豹浏览器用的是IE浏览器的内核应该是因为版本问题所以这里两条都是undefined IE11及以上是正常抛出结果的 你可以自己再试试
2017-04-30 回复 有任何疑惑可以回复我~
#3

12只怕有心人 提问者 回复 五更人_

再试了下IE11, Edge, 猎豹浏览器都没办法解读 obj._proto_.hasOwnProperty , 到时都可以支持 hasOwnProperty. 我使用的猎豹当前也是IE11的内核. :(
2017-05-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

new运算符的操作结果跟视频不一样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信