js数组--到底什么是数组 & a.forEach

2018-03-21  本文已影响0人  CeaCrab

Array --数组

js中什么是数组?
i. 用array构造出来的对象就是数组。
ii.它与Object的区别是:array是用array构造出来的对象,它的共有属性是是由array构造的,它的共有属性也是一个简单的对象,它也有下划线proto,并且指向Object根;Object是用Object构造出来的对象,他的下划线proto直接指向Object根,他们都是对象,不同的是原型链不一样。

数组a和obj都是一个对象,不同之处是他们的共有属性不同,数组之所以是数组,因为他有数组的特点

数组之所以是数组我们把它当数组,下图中,同一个数组,不同是遍历方式就出现了不一样的结果,for循环遍历,是i++,所以xxx,yyy遍历不到。对象遍历结果就出来了。所以说数值之所以是数组是我们把它当数组来遍历了。


数组方式遍历
对象方式遍历
  1. Arrar数组是一种特殊的对象,当我们声明一个数组的时候 a=[1,2,3]; 其实就是声明了一个对象,这个对象的length:3,keys = ['0':1,'1':2,'2':3]
  2. 如果声明一个数组只有length,keys,为什么我们可以a.fush?这是因为它也有自己的共有属性,下划线proto指向这个共有属性,共有属性有push。这就是js强大之处,因为共有属性的存在,它可以用很小的体积获取更多的功能。


    深度截图_选择区域_20180311171923.png
    深度截图_选择区域_20180311172918.png
    深度截图_选择区域_20180311194939.png
    深度截图_选择区域_20180311195017.png
    深度截图_选择区域_20180311195131.png
    深度截图_选择区域_20180311195326.png
//用法,dir打印可以打印出层级结构
> function f () {
       console.dir(arguments)
}
> f(1,2,3)
// Arguments(3)
_proto_
深度截图_选择区域_20180311203017.png
//诠释下边代码
function forEach(array,x){ //forEach接收了一个数组array和一个函数x
  for(let i = ; i < array.length; i++){ //遍历数组array
    x(array[i},i) //执行函数x,并接收两个参数,一个是数组的value,一个是数组的key
  }
}
forEach(['a','b','c'],function(value,key){ //forEach传入一个数组,一个函数,函数的参数一个是数组的value,一个是数组的key
      console.log(value,key) //打印出value和key
    }
// a 0 
// b 1 
// c 2 
**********************************************************************************************
var a = ['a','b','c'];
a.forEach(function(x,y){ //a.forEach,遍历数组a,接收调用这个函数,函数的参数x对应遍历数组结果的value,参数y对应遍历数组结果的key
    console,log(value,key)
}
深度截图_选择区域_20180321152151.png
  1. y()和y.call()表示执行(调用)这个函数


    y()和y.call()表示执行(调用)这个函数
    接收并执行这个函数,同时传参数给另一个函数

    声明一个函数,forEach一个数组和一个函数x,遍历这个数组,执行函数的同时同时传两个参数,一个是数组的value,一个是key。forEach定义这个数字的value,执行函数x,打印出函数的value和key(同时传的两个参数),因为数组有3个value,遍历a的时候调用下x,两个值是 (a,0),遍历到b的时候再调用x…


    深度截图_选择区域_20180312004509.png
a=['aaa','bbb','ccc']; //声明一个数组
a.forEach(function(x,y){  //faEach一个函数,必须有两个或三个值,a.forEach(遍历传入了a数组),x一定是value,y一定是key
  console.log(x.y) //打印出value key
})
// aaa 0
// bbb 1
// ccc 2
上一篇 下一篇

猜你喜欢

热点阅读