《JavaScript 语言精粹》 学习笔记 —— 第六章 数组


第六章 数组

6.1、数组是一段线性分配的内存,它通过整数去计算偏移并访问其中的元素。
6.2、JavaScript 没有数组数据结构。但提供了一种类数组特性的对象。它把数组的下标转变成字符串,用作其属性。
6.3、JavaScript 中这种类“数组特性的对象”与一般对象的不同点在于:1、此对象继承自Array.prototype,而一般对象继承自Object.prototype;2、此对象拥有一个诡异的length属性,而一般对象没有。
6.4、JavaScript中,允许数组包含任意混合类型的值。例如:
	var misc = ['string', 98.6, true, null, undefined, ['nested', 'array'], {object : true}, NaN, Infinity];
	misc.length // 10
6.5、每一个数组都有一个length属性。和大多数其他语言不同,JavaScript数组的length没有上界。
6.6、length 属性的值是这个数组中最大整数属性名加上1,所以它不一定等于数组里属性的个数。例如:
	var myArray = [];
	myArray.length // 0
	
	myArray[1000000] = true;
	myArray.length // 1000001
	// myArray 只包含一个属性
6.7、[] 后缀下标运算符将它的表达式转换成一个字符串,如果该字表达式有toString方法,就是用该方法的值。这个字符串被用作属性名。如果这个字符串看起来像一个大于等于这个数组当前的length且小于4 294 976 295的正整数,那么这个数组的length就会被重新设置成新的下标加1。
6.8、可以手动设置length的值。设置更大无须给数组分配更多的空间,而把length设小,将导致下标大于等于新length的属性被删除。
6.9、由于JavaScript中的数组就是对象,所以delete运算符可以用来从数组中移除元素。不幸的是,这样户在数组中遗留一个空洞。这是因为排在被删除元素之后的元素保留了他们最初的名字(下标)。
6.10、splice方法可以用来删除数组中的一些元素。第一个参数是数组中的序号,第二个参数是要删除元素的个数。此方法对大型数组来说效率不高。
6.11、typeof 运算符报告数组的类型是'Object',JavaScript数组与对象的区别是混乱的。
6.12、可以通过for in语句来遍历一个数组所有的属性,for in无法保证属性的顺序,而for语句能避免这样的问题。
6.13、一个检查对象是否为数组的函数:
	var is_array = function (value) {
		return value &&
			typeof value === 'object' &&
			typeof value.length === 'number' &&
			typeof value.splice === 'function' &&
			!(value.propertyIsEnumerable('length'));
	};

总结:JavaScript中的数组并没有数组结构,而是一种类数组的对象。该对象继承自Array.prototype,它多了一个length属性。


转载请注明出处:http://blog.csdn.net/xxd851116/article/details/7671892

转载于:https://www.cnblogs.com/xingxiudong/archive/2012/06/17/3986915.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值