数组的定义:
今天碰到一个问题:
(this._callback[evn] || (this._callback[evn] = [])).push(callback);
this._callback[evn] undefined-->执行this._callback[evn] = []初始化数组
数组初始化完毕,push()回调函数

   var arr = new Array()
   console.log(arr['item1'])//undefined
    arr['item1'] = []// 新建一个数组
    arr['item1'].push('item2')//在空数组的基础上push("item2")
    console.log(arr['item1'])//输出["item2"]

constructor 属性返回对创建此对象的数组函数的引用。

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array();
          if(arr.constructor ==Array){
            document.write('This is an array');
          }
        </script>
 </body>
 </html>

可以将constructor打印

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
 </head>
 <body>
        <script type="text/javascript">
          function staff(name,sex,job){
             this.name = name;
             this.sex = sex;
             this.job = job;
          }
          var bill = new staff('bill yuan','man','ceo');
          document.write(bill.constructor)
        </script>
 </body>
 </html>

prototype 可以向对象添加方法和属性

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!-- prototype 属性使你有能力向对象添加属性和方法。 -->
 </head>
 <body>
        <script type="text/javascript">
          function staff(name,sex,job){
             this.name = name;
             this.sex = sex;
             this.job = job;
          }
          var bill = new staff('bill yuan','man','ceo');
          staff.prototype.sallary = null;
          staff.prototype.doSomething = function(v){
            document.write(v)
          }
          bill.sallary = 100000;
          bill.doSomething('say something')
          document.write(bill.sallary+bill.name)
        </script>
 </body>
 </html>

对象方法 contact,用于连接2个或2个以上的数组,合成一个大数组

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!-- contact 对象方法,用于连接2个或者以上的数组。 -->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('e1','e2','e3');
          var arr1 = new Array('n1','n2','n3');
          var arr2 = new Array('b1','b2','b3');
          //var str = new Array(arr.concat(arr1,arr2))
          var str = arr.concat(arr1,arr2)
          document.write(str)
        </script>
 </body>
 </html>

对象方法 join,用于将数组中的每一个元素使用指定的分割符合成一个你想要的字符串。

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!--join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。.join(separator)-->
     <!--返回一个字符串。该字符串是通过把 array中的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator(分隔符)字符串而生成的-->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('what','is','your','name?');
          var str = arr.join(' ')
          document.write(str)
        </script>
 </body>
 </html>

对象方法 pop();用于删除数组最后一个元素,并且返回该元素值

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
    <!-- pop() 方法用于删除并返回数组的最后一个元素。 -->
    <!-- pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。-->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('what','is','your','name?','somethingelse');
          document.write(arr)
          document.write('<br>')
          document.write(arr.pop())
          document.write('<br>')
          document.write(arr)
        </script>
 </body>
 </html>

对象方法.push可以向数组添加多个元素
.unshift 可以从开头添加一个或是多个元素

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!-- push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 -->
     <!-- push() 方法可把它的参数顺序添加到 Array 的尾部。它直接修改 Array,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。 -->
     <!-- 要想数组的开头添加一个或多个元素,请使用 unshift() 方法。 -->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('what','is','your','name?');
          document.write(arr+'<br>')//what,is,your,name?
          document.write(arr.push('do','you','have','time?'))//8
          document.write('<br>')
          document.write(arr+'<br>')//what,is,your,name?,do,you,have,time? 
          document.write(arr.unshift('do','you','have','time?'))//12
          document.write('<br>')
          document.write(arr)//do,you,have,time?,what,is,your,name?,do,you,have,time? 
        </script>
 </body>
 </html>

数组对象方法.shift() 用于删除第一个元素,并且返回这个元素。

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!--shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。-->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('what','is','your','name?');
          document.write(arr+'<br>')//what,is,your,name?
          document.write(arr.shift())//what
          document.write('<br>')
          document.write(arr)//is,your,name?
        </script>
 </body>
 </html>

数组对象方法,arr.slice(start,end)由于选取数组元素(含头不含尾)

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!--slice() 方法可从已有的数组中返回选定的元素。截取的字符串含头不含尾-->
     <!-- start 如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 -->
     <!-- end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 -->
 </head>
 <body>
        <script type="text/javascript">
          var arr = new Array('what','is','your','name?');
          document.write(arr.slice(0,2))//what,is
          document.write('<br>')
          document.write(arr+'<br>')//waht,is,your,name?
          document.write(arr.slice(1,-1))//is,your
        </script>
 </body>
 </html>

array数组对象方法 .sort(sortBy),用于对数组里面的元素进行排序

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!-- sort() 方法用于对数组的元素进行排序。 -->
     <!-- 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
    若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    若 a 等于 b,则返回 0。
    若 a 大于 b,则返回一个大于 0 的值。
 -->
 </head>
 <body>
        <script type="text/javascript">
        function sToBig(a,b){
          return a-b//按照数字从小到大排序
        }
        function bToSmall(a,b){
          return b-a//按照数字从大到小排列
        }
          var arr = new Array(1,3,6,7,0,65,34,23,54,18);
          document.write(arr.sort(sToBig))//0,1,3,6,7,18,23,34,54,65
          document.write('<br>')
          document.write(arr.sort(bToSmall))//65,54,34,23,18,7,6,3,1,0
          var arr2 = new Array('car','doctor','zoo','tool','apple')
          document.write('<br>')
          document.write(arr2.sort())//apple,car,doctor,tool,zoo 
        </script>
 </body>
 </html>

数组对象方法 splice(index,howmany,item) 由于修改数值元素,增删替换元素

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
     <!-- arr.splice(index,howmany,item) -->
     <!--   index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。插入数据一般是插在前面 -->
     <!-- how many  必需。要删除的项目数量。如果设置为 0,则不会删除项目。 -->
     <!--  item 可选。向数组添加的新项目。-->
 </head>
 <body>
        <script type="text/javascript">
           var arr = new Array("{'1':'m','2':'n'}","{'1':'x','2':'y'}","{'1':'a','2':'b'}","{'1':'c','2':'d'}","{'1':'w','2':'z'}","{'1':'d','2':'t'}");
           document.write(arr.splice(2,0,"{'1':'mike','2':'hh'}"))
           document.write('<br>')
           document.write(arr)//{'1':'m','2':'n'},{'1':'x','2':'y'},{'1':'mike','2':'hh'},{'1':'a','2':'b'},{'1':'c','2':'d'},{'1':'w','2':'z'},{'1':'d','2':'t'} 
        </script>
 </body>
 </html>

对象方法,toSource由于打印输出对象的源代码

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
<!-- toSource() 方法表示对象的源代码。该原始值由 Array 对象派生的所有对象继承。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。 -->
<!-- 只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。 -->
 </head>
 <body>
        <script type="text/javascript">
           function Staff(Name,Gender,job){
             this.Name = Name;
             this.Gender = Gender;
             this.job = job;
           }

          var mk = new Staff('mike','male','staff')
          document.write(mk.toSource())//({Name:"mike", Gender:"male", job:"staff"}) 
        </script>
 </body>
 </html>

toString对象方法,用于将数组转换成字符串

 <!DOCTYPE html>
 <html>
 <head>
     <title>html</title>
<!-- toString() 方法可把数组转换为字符串,并返回结果(数组中的元素之间用逗号分隔。)。返回值与没有参数的 join() 方法返回的字符串相同。 -->
 </head>
 <body>
        <script type="text/javascript">
           var arr = new Array('item1','item2','item3')
           document.write(arr.toString())
        </script>
 </body>
 </html>

valueOf 返回数组对象原始值

<html>
<!-- valueOf() 方法返回 Array 对象的原始值。该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。 -->
 <body>
  <script type="text/javascript">
    var arr = new Array('item1','item2','item3')
    document.write(arr.valueOf())//item1,item2,item3
  </script>
 </body>
</html>

arr.concat(arr1, arr2) 不改变原来数组的基础上 连接2个数组 变成一个数组


MichaelDuan
1.8k 声望39 粉丝