为什么地球上的杰克出现在警报箱的序列中?

Pen*_*ang -2 javascript

Object.prototype.jack = {};

var a = [1,2,3];

for(var number in a){
    alert(number);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么"杰克"这个词跳出警报框?

非常感谢你!

Yot*_*mer 5

简单 - 数组是javascript中的对象,所以添加:

Object.prototype.jack={};
Run Code Online (Sandbox Code Playgroud)

你已经为所有对象添加了一个可枚举的属性'jack'(并且通过它添加到所有数组).

一旦创建了数组"a"并循环遍历其所有属性

for(var number in a)
Run Code Online (Sandbox Code Playgroud)

你肯定会得到一个'杰克'警报.为了避免它出现,您可以使用.hasOwnProperty()以确保不继承所有警报属性.或使用常规

for(var i=0; i < a.length; i++)
Run Code Online (Sandbox Code Playgroud)

环.