什么是类数组对象
拥有索引属性和 length 属性的对象
var array = ["name", "age", "sex"];
var arrayLike = {
0: "name",
1: "age",
2: "sex",
length: 3,
};
类数组对象使用数组方法
var arrayLike = { 0: "name", 1: "age", 2: "sex", length: 3 };
Array.prototype.join.call(arrayLike, "&"); // name&age&sex
Array.prototype.slice.call(arrayLike, 0); // ["name", "age", "sex"]
// slice可以做到类数组转数组
Array.prototype.map.call(arrayLike, function (item) {
return item.toUpperCase();
});
Arguments 对象
Arguments 对象的 length 属性,表示实参的长度,举个例子:
function foo(b, c, d) {
console.log("实参的长度为:" + arguments.length);
}
console.log("形参的长度为:" + foo.length);
foo(1);
// 形参的长度为:3
// 实参的长度为:1
callee 属性
Arguments 对象的 callee 属性,通过它可以调用函数自身。
讲个闭包经典面试题使用 callee 的解决方法:
var data = [];
for (var i = 0; i < 3; i++) {
(data[i] = function () {
console.log(arguments.callee.i);
}).i = i;
}
data[0]();
data[1]();
data[2]();
// 0
// 1
// 2