以下代码要用到之前博客中的代码,在执行时请将其中的代码引入,否则报错。
代码:
/************
* 数组
**************/
console.log('*****************长度');
//每个数组都有一个length属性。并且没有上界,如果你用大于或等于当前length的数字做为下标累存储一个元素,
//那么length值会被增大以容纳新元素,不会发生数组下标越界错误。
var myArray = [];
console.log(myArray.length);
myArray[10000] = true;
console.log(myArray.length);
//你可以直接设置length的值。设置更大的length不会给数组分配更多的空间。
//而把length设小将导致所有下标大于等于新length的属性被删除:
var numbers = ['zero','one','two','three','four'];
console.log('设置length长度之前numbers[4]为:',numbers[4]);
numbers.length = 3;
console.log('设置length长度之后numbers[4]为:',numbers[4]);
console.log('*****************删除');
//由于数组也是对象,所以delete运算符可以用来从数组中移除元素,但移除后会留下一个空洞。
// delete numbers[1];
// var str = '';
// for(var i = 0;i<numbers.length;i++){
// str += numbers[i]+' ';
// };
//console.log(str);
//可以这个splice方法。
//numbers.splice(start, deletecount);
//start 表示从哪个下标开始删除,deletecount表示删除几个
console.log('******************数组和对象容易混淆的地方');
//js对于数组和对象的区别是混乱的,typeof运算符判断数组的类型是‘object’,这没有任何意义。
//我们想要判断数组还是对象只能自己定义一个函数来弥补这个缺陷:
//var is_array = function(value){
// return value && typeof value === 'object' && value.constructor === Array;
//};
//遗憾的是,它在识别从窗口(window)或帧(frame)里构造的数组时会失败,有一个更好的办法去判断一个对象是否为数组:
var is_array = function(value){
return Object.prototype.toString.apply(value) === '[object Array]';
};
var arr_test = [1,3,4];
var obj_test = {};
console.log('数组:',is_array(arr_test));
console.log('对象:',is_array(obj_test));
//console.log(arr_test.length);
//数组也是对象,所以可以给数组增加属性,但增加的属性不会影响数组的length的值。
//arr_test.total = 8;
//console.log(arr_test.length);