摘要: Javascript 引用类型Object,Array
Object
var person = new Object();
person.name = 'zhangsan';
Object居然是叫做构造函数,还有一种可以创建Object实例(对象字面量表示法),不会调用Object构造函数
var person = {
name : 'zhangsan'
}
如何使用属性值
- person.name
- person["name"]
以上两种方式都可以,person.name更直观,person["name"]可以用变量访问属性person[variable],或者出现关键字·特殊字符等等,例如 , person["hello world"]
Array
两种创建方式:
var colors = Array();
var colors = []; // 不会调用Array构造函数
需要注意第二种方式,不要这么干var colors = ["red","green",],这样会变成3个长度,有些游览器是2个长度,一定要把最后的逗号去掉
数组长度问题
colors.length可以获取数组长度
var colors = [];
colors[99] = 0;
alert(colors.length); // 此时数组的长度变为100,其它0到98位置的值都是undefined
使用isArray()检测数组,为什么要这样好像是有原因的,但是我不懂,先做个标记吧,以后再看看
一些数组函数的使用:
var colors = ["red", "blue", "green"];
console.log(colors.toString()); // 逗号隔开的字符串
console.log(colors.join(">")); // 以>隔开的字符串,默认是以逗号隔开
var len = colors.push("pike", "black"); // 向数组末尾添加多个元素,返回修改后数组的长度
console.log(colors);
console.log("The length of colors is " + len);
var element = colors.pop(); // 数组末尾移除一个元素,返回被移除的元素
console.log("The last element is " + element2 + " has been removed");
console.log(colors);
var element2 = colors.shift(); // 移除首页元素,返回被移除的元素
console.log("The first element is " + element2 + " has been removed");
var len2 = colors.unshift("organce", "white"); // 向数组头部插入多个元素,返回修改后数组的长度
console.log(colors);
console.log("The length of colors is " + len2);
colors.reverse(); // 反转数组
console.log(colors);
数组排序问题
调用 colors.sort() 可以用来排序,但是sort比较的是字符串,即使是数组元素是数字,也会调用toString()转换为字符串在比较.
var num = [1,5,10,15,20];
num.sort();
console.log(num); // [1, 10, 15, 20, 5] 真的很尴尬
解决方法如下:
function compare(value1, value2)
{
return value1 - value2;
}
var num = [1,5,10,15,20];
num.sort(compare); // 传递个参数
console.log(num);
复制副本
引用类型复制操作其实是复制指针,如果想要获得一个副本,可以用 concat 方法,如下
var num = [1,5,10,15,20];
var num2 = num.concat();
num[0] = 1237;
console.log(num); // [1237, 5, 10, 15, 20]
console.log(num2); // [1, 5, 10, 15, 20]
concat()方法可以基于当前数 组中的所有项创建一个新数组。具体来说,这个方法会先创建当前数组一个副本,然后将接收到的参数 添加到这个副本的末尾,最后返回新构建的数组。 e.g. var num2 = num.concat( 25, 30, [35, 40] );
© 著作权归作者所有