类数组对象与arguments

简介: 类数组对象与arguments

什么是类数组对象

拥有索引属性和 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
目录
相关文章
|
编译器 C++ 开发者
C++构造函数在数组中的使用
C++构造函数在数组中的使用
86 0
|
6月前
|
JavaScript 前端开发 索引
在JavaScript中,可以使用数组字面量或Array构造函数来创建一个数组对象
【4月更文挑战第16天】在JavaScript中,可以使用数组字面量或Array构造函数来创建一个数组对象
66 4
|
6月前
|
JavaScript 前端开发 索引
往数组添加对象的方法
往数组添加对象的方法
31 0
|
12月前
|
存储 索引
数组和对象有什么区别?
数组和对象有什么区别?
78 0
lamada List对象属性值转数组array
lamada List对象属性值转数组array
101 0
|
JavaScript 前端开发
|
存储 索引 Python
Python函数是所谓的第一类对象(First-Class Object)是什么鬼?
之前写过一篇关于装饰器的文章,虽然写得还算不错,但是也有不少同学表示没看懂,我大概分析了其中的原因,主要问题是他们不理解函数,因为Python中的函数不同于其它语言。
152 0
Array.prototype.includes() 原型调用用法案例讲解
Array.prototype.includes() 原型调用用法案例讲解
114 2
|
JavaScript 算法
【干货】Array对象的方法大全,看看你知道多少.
从《高级程序设计》中整理出来的数组的概念和数组对象的一些方法,分享给大家同时也是复习复习,有不正确的地方欢迎指正,共同进步。
186 0
lodash创建一个从对象中选择的属性的对象,传入函数
lodash创建一个从对象中选择的属性的对象,传入函数
74 0