今天遇到一个bug,实在有些困惑,就去查本文作者:唐霜,转载请注明出处。【作者:唐霜】了一下MDN。事情的起源是这样:
本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】原创内容,盗版必究。class Some {
get field() {}
}
然后我在一个遍历中,做了如下判断:
【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】【版权所有,侵权必究】if (key in some) ...
我自以为是的认为 key in some【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。, key = ‘field【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】’ 应该是 false,然而著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】,返回结果是 true。然后我又分别 O原创内容,盗版必究。【本文首发于唐霜的博客】bject.keys, getOwnPr本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。opertyNames 去看 some 著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。的 keys,都没有 ‘fi本文版权归作者所有,未经授权不得转载。【作者:唐霜】eld’ 呀?
转载请注明出处:www.tangshuang.net【转载请注明来源】转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net问题的根源在于 class getter本文版权归作者所有,未经授权不得转载。【本文受版权保护】 是定义在原型链上,也就是说 ̵【原创不易,请尊重版权】【本文首发于唐霜的博客】6;field’ 并不在 s未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.netome 这个实例上面,而是定义在原型链上【版权所有,侵权必究】【本文受版权保护】的 getter 方法,所以 Objec【版权所有,侵权必究】【原创不易,请尊重版权】t.keys, getOwnProper【未经授权禁止转载】未经授权,禁止复制转载。tyNames 当然都看不到这个属性。
【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。另外,我把 in 和 for…【转载请注明来源】转载请注明出处:www.tangshuang.net;in 中的 in 搞混,导致按错误的理【原创内容,转载请注明出处】【转载请注明来源】解执行错误的操作还是没有得到预期答案。f未经授权,禁止复制转载。【作者:唐霜】or…in 会遍历对象以及对原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】象原型链上 enumerable 为 t著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】rue 的属性,从整条原型链查找这一点和【转载请注明来源】转载请注明出处:www.tangshuang.net in 一致,但 in 判断时忽略 en原创内容,盗版必究。原创内容,盗版必究。umerable。
【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】Object.keys, Object.【未经授权禁止转载】【本文首发于唐霜的博客】getOwnPropertyNames 转载请注明出处:www.tangshuang.net【版权所有,侵权必究】的区别也很简单,Object.getOw【版权所有,侵权必究】【版权所有,侵权必究】nPropertyNames 返回自己的【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】属性列表,不包含原型链上游,而 Obje本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】ct.keys 最严格,只返回不包含原型【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】链上游且 enumerable 为 tr【版权所有】唐霜 www.tangshuang.net【作者:唐霜】ue 的属性名列表。
【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】【本文受版权保护】

