js高级程序设计(第三版)总结——第五章引用类型(Object类和Array类)

23 篇文章 0 订阅
16 篇文章 0 订阅

其实js中的引用类型就是java中的类,数据和功能和集合;对象就相当于类的实例。

一、object类型

js中的引用类型的值基本都是Object的实例,一般使用new操作符或者对象字面量的方法定义对象。

var person = new Object();
person.name = "Nicholas";
var person = {
name : "Nicholas",
age : 29
};

需要注意的一点:访问对象属性的方法有两种方式,方括号或者点,一般使用点访问,但是在某些特殊情况下使用方括号!

二、Array类型
1、创建

创建时候,也有两种方法:new操作符或者数组字面量(不调用array构造函数)的方法定义一个数组。

var colors = new Array();
var wallace=[];

注意!!!!!:

var values = [1,2,];

在IE 中,values 会成为一个包含3 个项且每项的值分别为1、2 和undefined 的数组;在其他浏览器中,values 会成为一个包含2 项且值分别为1 和2 的数组。原因是IE8 及之前版本中的ECMAScript 实现在数组字面量方面存在bug。像这种省略值,不建议使用。

2、js数组的独特性

js数组相比其他语言的数组,更加灵活,体现在:

var colors = ["red", "blue", "green"];
  1. 当访问的下标超过了colors.length-1,不会报错,而是把所有colors.length到访问的下标值都设置为undefined.

  2. 数组的length 属性很有特点——它不是只读的。因此,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。下面例子中随着不断赋值,数组的length在不断变大。

var colors = ["red", "blue", "green"]; 
colors[colors.length] = "black"; 
colors[colors.length] = "brown"; 
3、数组中的一些方法
  1. valueOf():返回最适合该对象类型的原始值;
    toString(): 将该对象的原始值以字符串形式返回。
    在数值运算里,会优先调用valueOf(),如a + b;
    在字符串运算里,会优先调用toString(),如alert(c)。

  2. push() pop() shift() unshift() reverse() sort() concat() slice() splice() indexOf() lastIndexOf()略

  3. es5中的五个迭代方法
    每个函数都要接受一(两)个参数,每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this 的值。其中运行函数要接受三个参数::数组项的值、该项在数组中的位置和数组对象本身。这五个函数都不会修改原数组。
 iteraFunc(function(item, index, array){},可选this)
    every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
    filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
    forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
    map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
    some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。  


  4. 归并方法reduce()和reduceRight()
      这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中,reduce()方法从数组的第一项开始,逐个遍历到最后。
      而reduceRight()则从数组的最后一项开始,向前遍历到第一项。 这两个方法都接收两个参数:
      一个在每一项上调用的函数和(可选的)作为归并基础的初始值。调用函数接收4 个参数:
      前一个值、当前值、项的索引和数组对象。
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值