引用类型
对象是引用类型的一个实例。
新对象是使用new 操作符后跟一个构造函数来创建的。
Object类型
两种创建方法:
第一种,从Object构造函数中new 出新实例:
var obj = new Object();
obj.name = 'xxx';
第二种,对象字面量方法:
var obj = {
name:'xxx',
"age":18,
5:true
}
上例中,对象的属性可以是字符串,数值5会自动转化为‘5’作为对象的属性。
在JavaScript 也可以使用方括号表示法来访问对象的属性。在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中,属性名中是可以包含非字母非数字的。
var obj = {
name:"xxx",
age:18,
}
alert(obj['name']);//'xxx'
obj["first name"] ==>合法,可以访问
Array类型:
ECMAScript 数组的每一项可以保存任何类型的数据。
创建数组:
var arr = new Array();//创建空数组
var arr = new Array(3);//创建长度为3的空数组
var arr = new Array('nike');//创建包含'nike'元素的数组
var arr = [];//创建空数组
var arr = ['nike'];//创建包含'nike'元素的数组
array的length属性返回数组长度,也可以在数字尾部增删元素:
var arr = ['a','b'];
arr.length = 3;
alert(arr[2]);//undefined
arr.length = 1;
alert(arr[1]);//undefined
检测数组:
两种方法:
value instanceof Array //返回true或者false
Array.isArray(value);//返回true或者false
数组转换:
toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用valueOf()返回的还是数组。
数组方法:
- join方法:可以使用不同的分隔符来构建这个字符串。join()方法只接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串
var colors = ["red", "green", "blue"];
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue
- push()方法:可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
var colors = new Array(); // 创建一个数组
var count = colors.push("red", "green"); // 推入两项
alert(count); //2
- pop()方法则从数组末尾移除最后一项,减少数组的length 值,然后返回移除的项:
var item = colors.pop(); // 取得最后一项
alert(item); //"black"
alert(colors.length); //2
- sort()方法和reverse()方法:
sort排序:为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
为了解决这种不正常的排序规则,可以给sort()传递参数:
var values = [0, 1, 5, 10, 15];
values.sort(function(a,b){return a-b});//升序
alert(values); //0,1,5,10,15
values.sort(function(a,b){return b-a});//降序
alert(values); //15,10,5,1,0
- concat()方法:先创建当前数组一个副本,然后将接收到的参数
添加到这个副本的末尾,最后返回新构建的数组。
var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown
- slice()方法:在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。
var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow
- splice()方法:
- 删除::只需指定2 个参数:要删除的第一项的位置和要删除的项数。例如,splice(0,2)会删除数组中的前两项。
- 插入:只需提供3 个参数:起始位置、0(要删除的项数)和要插入的项,例如,splice(2,0,”red”,”green”),会从当前数组的位置2 开始插入字符串”red”和”green”。
- 替换:只需指定3 个参数:起始位置、要删除的项数和要插入的任意数量的项。splice (2,1,”red”,”green”)会删除当前数组位置2 的项,然后再从位置2 开始插入字符串”red”和”green”。
splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); // 删除第一项
alert(colors); // green,blue
alert(removed); // red,返回的数组中只包含一项
- indexOf()和lastIndexOf():这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。
var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4)); //3
alert(numbers.lastIndexOf(4)); //5