Lyrics


< More and better />


JavaScript引用类型

first:引用类型是一种数据结构

描述的是一类对象所有的属性和方法

一般访问对象属性都是使用点表示法,但是也可以使用方括号表示法

但是注意的是:使用方括号注意应该将访问的属性一字符串的形式放在括号中

所以如果属性名中包含:导致语法错误的字符和关键字,空格,等都可以使用括号表示法

如果属性名中含有空格,我们将不能使用点表示法,必须使用括号表示法,其他情况下,建议使用点表示法

  1. Object类型
  2. Array类型 创建数组类型

javascript 数组和其他语言有点不太一样,他可以存储任何类型的数据,类似于结构体,但是还是有序的,而且数组的长度是动态的,会随着数据的添加自动增长。

创建数组的基本方式有两种:
  1. 使用构造函数Array()

例如:

n
1
2
var n=new Array(20); 预先知道数组长度
var n=new Array("red","kll","ppp"); 多个数组项用逗号隔开

而且在使用Array构造函数时可以不使用(省略)new操作符

访问:如果方括号中的索引小于数组项数,则会得到相应的值,但是如果超出数组就会自动增加到这一项+1;类型就为undefined

数组的长度可以根据属性:length来获取

检测数组:检查看是不是数组
  1. 使用instanceof操作符 (鉴于只有一个全局环境) 确定某个(对象)是不是数组

    所以有Array.isArray()的方法 确定某个(值)是不是数组

    使用if语句判断

    类型转换:toString()转换为字符串,数组的话,转换为以逗号分隔的字符串

    调用value()返回的还是数组

    注意:如果使用alert().必须知道他本身要接受字符串参数,所以会在后台调用toString(),所以会和显示调用toString(),的效果一样

    数组继承的toLocalString(),toString(),value()

    默认都是以逗号分隔,但是使用join()可以使用不同的得分隔符,只接受一个参数,就是分隔符

    使用方法:Object.join(分隔符);
    如果数组的某一项是NUll或undefined,那么在这几种方法中,返回的结果都是空字符串

栈方法:
 1. 栈:限制插入和删除的数据结构(栈是一种后进先出的数据结构)最先添加,最早删除

2. 栈的插入(推入)和移除(弹出),只发生在一个位置---栈的顶部

3.  方法:push() 推入 

  接受任意数量的参数,逐个添加至数组末尾,返回数组长度

5.  pop()弹出
移除数组末尾的最后一项,返回移除的项;

var n=Array(['1','2','3','4']);
var N=n.push('6');   返回:5
var N=n.pop('1') ;   返回:1(被移除的项)
队列方法
  1. 队列数据结构是先进先出,从末尾添加((push()),前端删除(shift());

  2. 移除:shift()移除第一项 返回移除项

    unshift()可以再前端添加数组;push()后端添加,pop()后端删除

    1. 重排序方法:

      reverse(),反转,逆置;
      
      sort()升序;但是他本身调用的是toStrng()得到的是字符串,所以,也是按照字符的方式比较,所以需要给定相应的比较方法;
      
      通过参数,可以接受一个函数,函数体是比较规则;,就是自己写一个函数,函数体是比较规则,然后将这个函数作为sort()
      
      的参数,从而得到自己想要的结果
      
  3. 操作方法:

    1:concat(),可以基于一个数组,创建一个新的数组;
    
     先是复制已经存在的数组,然后参数是新的数组所要添加的元素,参数可以是单个元素,也可以是一个数组;
    
     都会添加到末尾;但是这个方法不会影响原始数组
    
     2:slice(),参数一个:返回参数到数组结尾的元素所构成的数组;
    
     参数:;两个,返回第一个参数至第二个参数之间的元素,注意但是不包括结束项,【   ),左闭右开;
    
     ,但是这个方法不会影响原始数组,
    
     如果slice()参数有一个负数,则用数组长度加上该数,确定相应位置,如果结束位置小于开始位置,则返回空数组;
    
     3:splice(),主要是向数组中部插入项,
    
     删除,参数2个【起始位置,结束位置),例如:splice(0,2) 删除0,1;数组前两项
    
    插入,参数3个,(插入的位置,0,插入元素)
    
    替换,参数3个,(起始位置,删除项的个数,替补的元素),注意替补的元素的个数不限;
    
  4. 位置方法:

    indexOf(),参数2个,查找的项和查找的起点位置,从数组前面开始
    
    lastindexOf(),参数2个,从数组后面开始
    
    找到 返回所找元素的位置,否则返回-1;,查找使用全等(===),所以类型也很严格;
    
  5. 迭代方法:5个,参数2个

    every()对一项都给定函数  ‘每’  一项返回true,则为true;  &&
    
    filter(),对一项都给定函数返回项数是true的组成的数组;
    
    forEach()对一项都给定函数,但是没返回值
    
    map()返回每次调用结果组成的数组;
    
    some()对一项都给定函数  ‘任意’ 一项返回true,则为true;  ||
    
    some()和every()区别:
    
    every(),传入的函数必须对每一项都返回true;
    
    some(),只要传入的函数对数组中的某一项返回true,就会返回true
    
  6. 归并方法:reduce() 正向,reduceRight() 逆向;