js里面的Object.keys, getOwnPropertyNames, in 和 for…in

广告位招租
扫码页面底部二维码联系

今天遇到一个bug,实在有些困惑,就去查本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。了一下MDN。事情的起源是这样:

【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】
class Some {
get field() {}
}

然后我在一个遍历中,做了如下判断:转载请注明出处:www.tangshuang.net

著作权归作者所有,禁止商业用途转载。【转载请注明来源】【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。
if (key in some) ...

我自以为是的认为 key in some未经授权,禁止复制转载。【转载请注明来源】, key = ‘field【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。’ 应该是 false,然而【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。,返回结果是 true。然后我又分别 O本文版权归作者所有,未经授权不得转载。【转载请注明来源】bject.keys, getOwnPr【本文首发于唐霜的博客】【关注微信公众号:wwwtangshuangnet】opertyNames 去看 some 【原创不易,请尊重版权】原创内容,盗版必究。的 keys,都没有 ‘fi【原创内容,转载请注明出处】【本文首发于唐霜的博客】eld’ 呀?

【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net【转载请注明来源】【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net

问题的根源在于 class getter原创内容,盗版必究。本文作者:唐霜,转载请注明出处。 是定义在原型链上,也就是说 ̵【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】6;field’ 并不在 s本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。ome 这个实例上面,而是定义在原型链上【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net的 getter 方法,所以 Objec【本文首发于唐霜的博客】原创内容,盗版必究。t.keys, getOwnProper本文作者:唐霜,转载请注明出处。【转载请注明来源】tyNames 当然都看不到这个属性。

【转载请注明来源】转载请注明出处:www.tangshuang.net【作者:唐霜】著作权归作者所有,禁止商业用途转载。

另外,我把 in 和 for…【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】;in 中的 in 搞混,导致按错误的理未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】解执行错误的操作还是没有得到预期答案。f未经授权,禁止复制转载。转载请注明出处:www.tangshuang.netor…in 会遍历对象以及对【原创内容,转载请注明出处】原创内容,盗版必究。象原型链上 enumerable 为 t原创内容,盗版必究。【版权所有,侵权必究】rue 的属性,从整条原型链查找这一点和本文版权归作者所有,未经授权不得转载。【本文受版权保护】 in 一致,但 in 判断时忽略 en【原创内容,转载请注明出处】【作者:唐霜】umerable。

著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。未经授权,禁止复制转载。【转载请注明来源】

Object.keys, Object.著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】getOwnPropertyNames 原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net的区别也很简单,Object.getOw本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.netnPropertyNames 返回自己的【本文首发于唐霜的博客】【原创内容,转载请注明出处】属性列表,不包含原型链上游,而 Obje著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】ct.keys 最严格,只返回不包含原型本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net链上游且 enumerable 为 tr【本文受版权保护】未经授权,禁止复制转载。ue 的属性名列表。

【本文首发于唐霜的博客】【作者:唐霜】【本文受版权保护】本文版权归作者所有,未经授权不得转载。