知识碎片 —— 数组 与 伪数组

今天在博客园上看到博主写的一篇博客,对我还是有帮助的,在这里记录一下~


js 中的数据类型: 

分为简单数据类型: num , string ,null,boolean,undefined

        引用数据类型:object,function,array


1.创建对象方法:

1)通过字面量的方式创建

2)通过“构造函数”的方式创建

3)通过object方式创建

4)使用工厂模式创建对象

5)通过原型模式创建对象


2.创建数组

1)采用直接量创建

var = arr= []

2)采用构造函数Array()创建

var arr  = new Array()

3.数组与对象的关系

JS 的 原型继承。所有的JS内置构造函数都是继承自 Object.prototype。在这个前提下,可以理解为,使用new Array()或 [ ] 创建出来的对象。都会拥有Object.prototype 的属性值

var obj = {};// 拥有Object.prototype的属性值
var arr = [];
//使用数组直接量创建的数组,由于Array.prototype的属性继承自 Object.prototype,
//那么,它将同时拥有Array.prototype和Object.prototype的属性值

1):这里得到了第一个 对象 与 数组的区别,数组不仅有 Object.prototype属性还有 Array.prototype属性    而 对象仅有Object.prototype属性

4.数组(跳过)

5. 伪数组

定义:

1:拥有length属性,其他属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)

2:不具有数组所具有的方法

var fakeArray = {
    length: 3,
    "0": "first",
    "1": "second",
    "2": "third"
};
 
for (var i = 0; i < fakeArray.length; i++) {
    console.log(fakeArray[i]);
}
 
Array.prototype.join.call(fakeArray,'+');

伪数组是个Object,而数组是array


下面所记录的 还没有学到,作为了解先记录一下

Js内置对象中常见的伪数组就是大名鼎鼎的 arguments:

(function() {
  console.log(typeof arguments); // 输出 object,它并不是一个数组
}());

在DOM对象中,childNodes也是伪数组

console.log(typeof document.body.childNodes); // 输出 object

此外,还有很多

伪数组存在意义,是可以让普通对象也能正常使用数组的很多算法,如:

var arr = Array.prototype.slice.call(arguments)

还有另一种写法: var arr = [].slice.call(arguments)

另外,你可以使用 bind 来简化该过程

或者

var arr = Array.prototype.slice.call(arguments,0);   // 将arguments对象转为真正的数组

Array.prototype.forEach.call(arguements,function(v)){

//循环arguments对象

}

猜你喜欢

转载自www.cnblogs.com/wtzmz/p/12938044.html
今日推荐