javascript - 使用 "for in"时,是什么导致原型(prototype)变量出现?

标签 javascript

我认识你should avoid it ,因此尽管很烦人,但我总是保护自己免受它的侵害。

但是究竟是什么导致原型(prototype)的扩展在使用“for in”时出现?有时(或看起来)使用“for in”是安全的,而其他时候则不是。

即:

我说的例子:

Array.prototype.last = function(){ return this[this.length-1]; }

显示为:

for(var k in someArray){
    console.log("%o %o", k, someArray[k]); // eventually outputs "last 'function(){ return this[this.length-1]; }'
}

最佳答案

此行为是设计使然。

for in 遍历所有可枚举属性,包括从原型(prototype)继承的属性。

关于javascript - 使用 "for in"时,是什么导致原型(prototype)变量出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481737/

相关文章:

javascript - 在 javascript 正则表达式中验证带括号的 boolean 表达式

javascript - 如何从 Markdown 链接到 VSCode 代码文件中的特定符号?

javascript - Angular-一个组件中有两个输出事件,但只有一个有效

javascript 使用严格的文档类型创建一个 iframe

进度条原型(prototype)中的 JavaScript 事件处理程序出现未定义的值

javascript - 在 IE8 中动态添加 tr 和 td 设计问题

javascript - 如何在QTP中通过iframe通过xpath查找元素

javascript - 在数据表中将键显示为值

javascript - 如何在 Javascript 中深度克隆 XMLDocument 对象?

javascript - 如何在 JavaScript 中将整数转换为二进制?