先上范例:
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // prints both bar and moo
}
这里我们要注意两点,一是 for in 循环会忽略 enumerable 设置为 false 的属性。例如一个数组的 length 属性。第二是,由于 for in 会遍历整个原型链,所以当原型链过长时,会对性能造成影响。
enumerable 是个很陌生的词汇,实际上,你很难在 javascript 中发现它的影子,而它实际上也是作者从 ruby 中借鉴而来的。创建 enumerable 的目的不是为了独立使用,而是采用“混用”的方式,而 Prototype 中很多方法都混用了 enumerable,所以它可以说是 prototype 的奠基石。这里不做详细介绍,详细内容可以参考 - Enumerable。
由于我们没法改变 for in 循环本身的行为,所以我们只能采取其他方法来过滤掉那些不希望出现在循环内的属性,通过 《Javascript学习笔记之对象篇(三) : hasOwnProperty》 我们知道 hasOwnProperty 方法是可以做到这一点的。
使用 hasOwnProperty 过滤
仍然使用上个例子:
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i);
}
}
这是唯一正确的写法,由于我们实用了 hasOwnProperty 方法,所以这次只输出 moo。如果不适用 hasOwnProperty 方法,那么当 Object.prototype 扩展时,就会出现错误。
现在很多框架都会选择从 Object.prototype 扩展方法,所以我们使用这些框架时,如果使用没有用 hasOwnProperty 过滤的 for in 循环时就会遇到问题。
总结
建议养成 hasOwnProperty 过滤属性的好习惯,不要对运行环境做任何假设,也无论原生的原型对象是否被扩展。
相关推荐:
文章去AI回归创作的本真之美
seo稿件是什么意思,seo文章写作要求 ,ai写作未来展望和展望
互联网快照:记录数字时代的每个瞬间,全网seo怎么优化内容
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
SEO武汉:如何提升武汉地区网站的搜索引擎排名,景区网站建设费用
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
ChatGPT:引领人工智能对话新时代的智能助手,Ai shiang
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
文章AI指令提升写作效率的智能助手
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
ChatGPT为什么访问不了?全面解析及解决方案,ai首页设计
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
自动生成文章的AI软件,助力内容创作的未来
AI人工智能:开发与应用的必备软件推荐
ChatGPT无法打开?这些解决办法让你重新畅享智能对话!,北大写作ai
SEO大神如何在激烈的互联网竞争中脱颖而出?,网页设计和网站建设试题
AI撰写工具的无限可能,让内容创作更高效、更精彩!
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
seo适合什么人做,哪种seo做得好 ,晋城ai论文写作免费
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
SEO兼职:如何通过SEO兼职实现收入增长与职业突破,濮阳网站建设官网
为什么新手做seo好做,为什么要懂seo ,ai少女 3060显卡
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
SEO这种营销方式,改变你网站流量的秘密武器,佛山网站设计建设
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
了解SEO:让你的网站在搜索引擎中脱颖而出的秘密武器,宝山区常见网站优化
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
SEO更好,让你的网站从此脱颖而出,渝中的知名网站建设
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器
ChatGPT破解版电脑:如何获得更强大的AI助手,提升工作与学习效率,ai预设动画
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
ChatGPT不能用?揭秘你可能忽视的真相和解决方法,强国ai2022
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
seo词库优化,搜索词条优化 ,ai点选择
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
AI搜索写文章:一丝丝智慧背后的无限可能,电脑免费ai写作神器
“新关键词”开启智慧营销新篇章,助力品牌突围,自己如何做网站seo
ChatGPT无法加载?检查网络并尝试重启,助您快速恢复畅通体验,burj ai
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
SEO利用:让你的网站快速登顶,获取更多流量与客户!,延边小程序推广平台网站
SEO快速提升SEO排名的有效策略:让你的网页飞跃搜索引擎,ai调色食物
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
文章AI生成:让创作变得更简单、更高效!
GoogleSEO打满分自然流量会高吗?揭开SEO优化的真相,猪插画ai