Typescript / Angular / ES6:我终于可以让`hasOwnProperty()`死
我一直不喜欢在
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |