update:伪数组arguments

This commit is contained in:
qianguyihao
2019-02-03 21:22:50 +08:00
parent d0841f9a94
commit 8f4d5e7524
3 changed files with 58 additions and 83 deletions

View File

@@ -184,23 +184,14 @@ array = Array.from(arrayLike)
## 其他
### instanceof判断是否为数组
```javascript
布尔类型值 = A instanceof B;
```
解释判断A是否为B类型instanceof 是一个关键字)。
在数组里,这种方法已经用的不多了,因为有下面这种方法。
### isArray():判断是否为数组
```javascript
布尔类型 = Array.isArray(被检测的值) ;
布尔值 = Array.isArray(被检测的值) ;
```
PS属于HTML5中新增的方法。
以前,我们会通过 `A instanceof B`来判断 A 是否属于 B 类型。但是在数组里,这种 instanceof 方法已经用的不多了因为有下面isArray()方法。
### toString():转换数组
@@ -218,50 +209,6 @@ PS属于HTML5中新增的方法。
这个方法的意义不大。因为我们指直接写数组对象的名字,就已经是数组本身了。
## 伪数组arguments
arguments代表的是实参。有个讲究的地方是arguments**只在函数中使用**。
1返回函数**实参**的个数arguments.length
举例:
```javascript
fn(2,4);
fn(2,4,6);
fn(2,4,6,8);
function fn(a,b) {
console.log(arguments);
console.log(fn.length); //获取形参的个数
console.log(arguments.length); //获取实参的个数
console.log("----------------");
}
```
打印结果:
![](http://img.smyhvae.com/20180125_2140.png)
2返回正在执行的函数arguments.callee
在使用函数**递归**调用时推荐使用arguments.callee代替函数名本身。
3之所以说arguments是伪数组是因为**arguments可以修改元素但不能改变数组的长短**。举例:
```javascript
fn(2,4);
fn(2,4,6);
fn(2,4,6,8);
function fn(a,b) {
arguments[0] = 99; //将实参的第一个数改为99
arguments.push(8); //此方法不通过,因为无法增加元素
}
```
## 清空数组
@@ -382,7 +329,7 @@ arguments代表的是实参。有个讲究的地方是arguments**只在函数
略难,答案暂略。
### 练习5
### 练习5:数组去重
问题:编写一个方法去掉一个数组中的重复元素。