第5章 引用类型

引用类型有时被称为对象定义,因为它们描述的是一类对象所具有的属性及方法

5.1 Object类型

创建Object实例的方式有两种。第一种是使用new操作符和Object构造函数。

1
2
3
var person = new Object();
person.name = "Nicholas";
person.age = 25;

另一种是使用对象字面量。

1
2
3
4
5
var person = {
   name : "Nicholas",
   age : 29,
   5 : true
};

在对象字面量中,使用逗号分隔不同的属性,属性名会自动转换为字符串。

访问对象属性的两种方式:方括号表示法和点表示法

1
2
alert(person.name);
alert(person["age"]);

当属性名中包含空格时,一般使用方括号表示法。

5.2 Array类型

创建Array实例的方式有两种。第一种是使用new操作符和Array构造函数,方法与Object实例相同;另一种是使用数组字面量。

1
2
var color = new Array(3); //创建一个包含3项的数组
var color = ["red","green"];

5.2.1 数组检测

如何确定某个对象是不是数组。对于一个网页、或者一个全局作用域而言,可以使用instanceof操作符。

1
2
3
if(value instanceof Array){
    //执行某些操作
}

若网页中存在多个框架,则实际上存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。instanceof操作符不再适用。

为了解决上述问题,可以适用Array.isArray()方法。

1
2
3
if(Array.isArray(value)){
    //执行某些操作
}

5.2.2 转换方法

所有对象都具有toLocaleString()、toString()、valueOf()方法。

1
2
3
4
var colors = ["red","green","blue"];
alert(colors.toString());
alert(colors.valueOf());
alert(colors); //后台默认调用toString()

上述方法默认返回逗号分隔的字符串,使用join()方法,可以用不同的分隔符来构建。

5.2.3 栈方法和队列方法

数组可以表现的像栈和队列一样,使用push()方法、pop()方法、shift()方法和unshift()方法。

1
2
3
4
5
  var colors = new Array();
  colors.push("red","green"); //向数组中推入两项
  var value = colors.pop(); //推出最后一项 green
  var value = colors.shift(); //取得第一项并返回
  colors.unshift("red"); //在数组前端推入一项,可返回当前数组长度

5.2.4 排序方法

数组中主要包含两种排序方法:reverse()、sort()。其中,reverse()方法会反转数组项的顺序,而sort()方法默认按字符串进行比较。sort()方法能以函数作参数。

1
2
3
4
5
6
7
8
9
10
11
12
  function compare(value1, value2) {
      if (value1 < value2){
           return -1;
      }else if(value1 > value2){
           return 1;
      }else{
           return 0;
      }
}
  var values = [0,1,5,10,15];
  values.sort(compare);
  alert(values); //0,1,5,10,15

比较函数在第一个值应该位于第二个之后的情况返回1,而在第一个值应该在第二个之前的情况下返回-1。两个if判断语句意味着在第一个值小于第二个值的情况下,第一个值位于第二个值之前;第一个值大于第二个值得情况下,则交换。将比较函数作为参数传递给sort方法后,values的数据实现升序排列。

说点什么
欢迎骚扰,有缘人互加友链
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...