加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Typescript / Angular / ES6:我终于可以让`hasOwnProperty()`死

发布时间:2020-12-17 07:06:15 所属栏目:安全 来源:网络整理
导读:我一直不喜欢在 javascript中循环对象时检查hasOwnProperty()的需要: for ( var key in object ) { if ( !object.hasOwnProperty( key ) ) { continue; } // Now I can do whatever I needed to do} 它似乎总是浪费垂直空间来遍历对象中的键,然后必须明确检
我一直不喜欢在 javascript中循环对象时检查hasOwnProperty()的需要:

for ( var key in object ) {
    if ( !object.hasOwnProperty( key ) ) {
        continue;
    }

    // Now I can do whatever I needed to do
}

它似乎总是浪费垂直空间来遍历对象中的键,然后必须明确检查以确保这些键不是来自其他地方.我显然很熟悉为什么这在javascript中是必要的,特别是由于旧的库有时会将东西注入原型链(咳嗽原型咳嗽).

但是,据我所知,棱角分明没有这样的东西.打字稿肯定没有理由.我无法想象任何现代的JavaScript框架会.因此,在现代Angular应用程序(或任何现代JavaScript应用程序)中跳过此类检查的可能缺点是什么.我只是冒着自己的团队意外修改原型(或意外导入修改原型的库)而导致问题的风险,还是有更多我不知道的麻烦空间?如果我尝试这样做,原型链会以什么其他方式咬我?

for ( let key in object ) {
}

我自己的测试没有发现任何问题,但我可能会遗漏一些明显的东西.是的,我知道mondern js / ts中的Object.keys(object).它完成了工作,但我不认为它像for … in一样干净,如果我可以让hasOwnProperty()死掉,这就是我宁愿使用的.

解决方法

在枚举普通对象和其他您知道没有可枚举继承属性的对象时,绝对没有理由包含此检查.你是对的,没有合理的现代框架对Object.prototype这样做.

自2012年以来已宣布death of hasOwnProperty checks

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读