作者: 哲己名了戴草帽 | 来源:发表于2017-09-20 17:14 被阅读0次

      窥探于《JavaScript高级程序设计.第3版》第5章“引用类型”。

      夹杂了自我的愚解,然后经过自我的蹂躏,就成了如下的读后感了。

     站在巨人的肩膀,看得更远。希望有人也能踩着我的肩膀前进哈。

                                                         一. Obejct类型    

    好处:在应用程序中存储和传输数据,是非常理想的选择。

    创建方式:

                1,new+Object构造函数

                    var person=new Object();

                      person.name="Nicholas";

                     person.age=29;

               2,对象字面量

                    var  person={

                       name:"Nicholos",

                        age:"29"

                    }

    引用Object的属性: 

               1,点表示法

                 person.name;

               2,方括号表示法来访问对象的属性

               person["name"]

     

                                      二.Array类型

             注:Array简称数组,与java语言相比,它更加自由,它的每一项可以保存任何类型的数据。

              1.创建方式

                       (1),var colors = new Array();   //new 加Array构造函数声明方式创建 

                       (2),var  colors=["red","blue","green"] ;   //数组字面量表示法

                        注:有些特殊的细节得注意:

                                首先对于构造函数方式创建数组如下几种形式都是对的。

                                var colors= new Array(20);   //创建length为20的数组

                                var colors = new Array("red","blue","green");  //创建3个字符串值的数组

                                var colors= Array(3);  //省略new,创建length为3的数组

                                var names =Array("Greg");  //省略new,创建1个字符串值的数组

                                对于数组字面量表示法,如下特殊的形式也是正确的:

                                var names=[];   //创建一个空数组

                                 var values=[1,2,];  //这样也对,但是不同的浏览器对其的认知可能有所偏差,例如在IE8及之前版本中,values会成为一个包含3个项且每项的值分别为1、2和undefined的数组;在其他浏览器中,values会成为一个包含2项且分别为1和2的数组。所以建议别这么用。

              2.Array用法

                   var colors=new Array("lv","zhang","guo");

                   (1),Array数组长度的获取

                     alert(colors.length); //3

                     (2),取值

                       alert(colors[0]);  //lv

                        alert(colors[100]);  //取值超过数组的length,返回undefined

                     (3).赋值

                       colors[0]="jin";

                       alert(colors[0]);  //jin

                       注:如果某个值得索引超过了 数组现有项数,数组的length会自动增加该索引值

                     colors[99] = "black";

                     alert(colors.length);  //100

                      (4),检测数组

                          Array.isArray(value);  //检测value是否为数组  true是 flase否

                    (5),转化方法

                            alert(colors.toString())  ;   //lv,zhang,guo

                            alert(colors.valueOf());    //lv,zhang,guo

                             alert(colors);                   //red,zhang,guo

                            join()方法只接受一个参数,即用作分隔符的字符串,然后返回包含所有数组的字符串。

                             alert(colors.join("||"));   //red||green||red

                   (6).栈方法

                             var colors = new Array();                                   //创建一个数组  

                              var count=colors.push("lv","zhang");            //推入两项

                              alert(count);  //2

                             count = colors.push("guo");                            //推入另一项

                              alert(count);                                                      //3

                             var item =colors.pop();                                      //取得最后一项

                             alert(item);

                              alert(colors.length);

                               注:push()方法可以接受任意数量的参数,把它们一个个的添加到数组尾部,并返回修改后数组的长度。

                                       pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

                  (7).队列方法

                              var colors= new Array();  //创建一个数组

                               var count= colors.push("lv","zhang"); //推入两项

                               alert(count);   //2

                                 count = colors.push("guo");

                                 alert(count);  //3

                                 var item = colors.shitf();  //取得第一项

                                  alert(item); //lv

                                  alert(colors.length);  //2 

                                  注:shift()方法能够移除数组中的第一项并返回该项,同时将数组长度减1.

                                         unshift()方法能在数组前端添加任意个项并返回新数组的长度。

                 (8)重排序方法

                         var values = [1,2,3,4,5];

                         values.reverse();

                         alert(values);  //5,4,3,2,1

                        注:reverse()方法会反转数组项的顺序。

                         fuction 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

                        注:sort()方法按升序排列数组项-----即最小的值位于最前面,最大的值排在最后面。

                              但是sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。但是这种排序方式在很多情况下都不是最佳方案,因此sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。

             (9)操作方法

                       var  colors = ["lv","zhang","guo"];

                        var colors2=colors.concat("love",["lu","yan"]); 

                        alert(colors);  //lv,zhang,guo

                         alert(colors2); //lv,zhang,guo,love,lu,yan

                       注:concat()方法可以基于当前数组中的所有项创建一个新数组。

                       var colors = ["lv","zhang","guo"];

                        var colors2=colors.slice(1);

                        var colors3 =colors.slice(1,2);

                         alert(colors2);  //zhang,guo

                          alert(colors3);  //zhang,guo

                       注:删除 :可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数,例如splice(0,2)会删除数组中的前两项。

                              插入:可以向指定位置插入任意数量的项,只需提供3个参数:起始位置、0(要删除的项数)和插入的项。如果要插入多项,可以再传入第四、第五,以至任意多个项。

                               替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。

                 (10)位置方法

                        var numbers = [1,2,3,4,5,4,3,2,1];

                         alert(numbers.indexOf(4));  //3

                          alert(numbers.lastIndexOf(4));  //5

                          alert(numbers.indexOf(4,4));//5

                          alert(numbers.lastIndexOf(4,4));  //3

            (11)迭代方法

                every()、filter()、forEach()、map()、some()为数组的5个迭代方法。

                every()用法: 

                    var numbers=[1,2,3,4,5,4,3,2,1];

                    var everyResult=numbers.every(function(item,index,array){

                          return (item>2);

                   });

                    alert(everyResult);  //false

                     注:every()对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.

                 some()用法:

                       var someResult=numbers.some(function(item,index,array){

                          return (item>2);

                      });

                       alert(someResult);  //true

                        注:对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true;

                     filter()用法:

                              var filterResult = numbers.filter(fuction(item,index,array){

                                       return (item>2)

                                });

                               alert(filterResult);  //[3,4,5,4,3]

                       注:filter()对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。

                      map()方法用法:

                           var mapResult = numbers.map(function(item,index,array){

                                   return item*2;

                           });

                          alert(mapResult);  //[2,4,6,8,10,8,6,4,2]

                          注:map()对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

                          forEach()方法用法:

                          numbers.forEach(fuction(item,index,array){

                               //执行某些操作

                           });

                           注:对数组中的每一项运行给定的函数。这个方法没有返回值。

              (11)归并方法

                     reduce()方法:(一).从数组的第一项开始,琢个遍历到最后。 (二)接受两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。(三),传给reduce()的函数接收4个参数:前一个值、当前值、项的索引和数组对象。

                      例如:  var values=[1,2,3,4,5];

                                   var sum = values.reduce(function(prev,cur,index,array){

                                       return prev+cur;

                                   }); 

                                   alert(sum);  //15

                        reduceRight()方法:(一).从数组的最后一项开始,琢个遍历到第一项。 (二)接受两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。(三),传给reduce()的函数接收4个参数:前一个值、当前值、项的索引和数组对象。

                            例如:  var values=[1,2,3,4,5];   

                                        var sum = values.reduceRight(function(prev,cur,index,array){

                                               return prev+cur;

                                         });

                                        alert(sum);  //15                                    

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/cjpnsxtx.html