今天在博客园上看到博主写的一篇博客,对我还是有帮助的,在这里记录一下~
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对象
}