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

JavaScript 里 in 运算符继承属性的问题

JavaScript 里 in 运算符继承属性的问题

天涯尽头无女友 2019-04-14 09:51:28
varo=newObject();o.OwnProperty('toString')//false'toString'ino//true里这句'toString'ino这句为何会返回true?
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

obj.hasOwnProperty判断某属性是“自身属性”还是“继承自原型对象的属性”;
in操作符判断的是该对象的某属性是否存在且可枚举;
                            
查看完整回答
反对 回复 2019-04-14
?
当年话下

TA贡献1890条经验 获得超9个赞

我觉得你不应该奇怪in,反而应该奇怪hasOwnPropery吧。不信你运行o.hasOwnProperty('hasOwnProperty')试试。关于这个MDN上不是已经讲的很详细了么:
EveryobjectdescendedfromObjectinheritsthehasOwnPropertymethod.Thismethodcanbeusedtodeterminewhetheranobjecthasthespecifiedpropertyasadirectpropertyofthatobject;unliketheinoperator,thismethoddoesnotcheckdowntheobject'sprototypechain.Object.prototype.hasOwnProperty
所以你可以这么理解:hasOwnProperty是检查自己真正拥有的属性,不检查继承的属性;而in是只要在对象内的属性都会检查。
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

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