Array.prototype.del =
function
() {
var
a = {}, c = [], l =
this
.length;
for
(
var
i = 0; i < l; i++) {
var
b =
this
[i];
// for 循环第 1 次:1
// for 循环第 2 次:2
// for 循环第 3 次:"2"
// for 循环第 4 次:2
// for 循环第 5 次:3
alert(b);
var
d = (
typeof
b) + b;
// for 循环第 1 次:number1
// for 循环第 2 次:number2 <--- 重复
// for 循环第 3 次:string2
// for 循环第 4 次:number2 <--- 重复
// for 循环第 5 次:number3
alert(d);
// for 循环第 1 次:number1 为 undefined
// for 循环第 2 次:number2 为 undefined
// for 循环第 3 次:string2 为 undefined
// for 循环第 4 次:注意 {} 中已经有了 number2,所以不为 undefined
// for 循环第 5 次:number3 为 undefined
alert(a[d]);
// a[d] 代表将 d 设为 a 的属性,例如 a = {number2},但没有值
if
(a[d] === undefined) {
// 1, 2, "2", 3 被 push
c.push(b);
// 这里 = 1 只是给此属性一个值,例如 a = {number2: 1}
a[d] = 1;
// for 循环第 1 次:{number1=1}
// for 循环第 2 次:{number1=1, number2=1}
// for 循环第 3 次:{number1=1, number2=1, string2=1}
// for 循环第 4 次:因为 number2 存在,此次被忽略
// for 循环第 5 次:
// {number1=1, number2=1, string2=1, number3=1}
alert(a);
}
}
return
c;
}
alert([1, 2,
"2"
, 2, 3].del());