Javascript 引用类型Object,Array

本文详细介绍了JavaScript中对象和数组的创建方式、属性访问方法、常用操作及注意事项,包括对象字面量表示法、数组长度特性、排序及副本复制等。

Object

var person = new Object();
person.name = 'zhangsan';

Object居然是叫做构造函数,还有一种可以创建Object实例(对象字面量表示法),不会调用Object构造函数

var person = {
    name : 'zhangsan'
}
如何使用属性值
  1. person.name
  2. 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] );

转载于:https://my.oschina.net/wuzhencan/blog/889344

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值