JavaScript学习笔记【三】

JavaScript的引用类型的运用、

  一、Object

    我们在开发JavaScript的时候、用到的最多的示例都是Object的示例、例如:

    var person = new Object();

    Object是一个构造函数、JavaScript规定在使用构造函数时、若构造函数不需要参数、则可以省略构造函数后边的括号、就变成了下边这样、

    var person = new Object;

    创建实例有两种方式、一种是使用new构造符、如上边那样、一种是采用对象字面量的方式、此种方式和使用new构造符的唯一区别就是不会调用构造函数、例如:

    var person = {};   //不会调用构造函数Object、

    var stu = {

      name : 'John',   //第一个属性后边需要跟一个逗号分开、属性name和age也可以使用引号括起来、

      age : 21    //最后一个属性后边不能跟逗号、否则在一些低版本的浏览器中会报错、

    };

    Object的实例有两种方式可以访问属性的示例、第一种是通过点号【.】来访问、

    var name = person.name;

    第二种是通过中括号、里边用字符串的形势、当属性中含有特殊字符或空格时、只能使用这一种方式、

    var name = person['name'];

    var name = person['first name'];

    还可以将一个变量传入到中括号中实现对属性的访问、

    var attr = 'first name';

    var name = person[attr];

  二、Array类型、

    1.数组的声明、 

      var arr = new Array();  //同Object一样、可以省略括号、

      var arr = new Array;

      var arr = new Array(20);  //声明一个长度为20的数组、

      var arr = new Array('a', 'b', 'c');  //声明一个初始值为['a', 'b', 'c']、长度为3的数组、

      数组也可以使用对象字面量的方式声明、同Object一样、使用对象字面量方式时、不会调用数组的构造函数Array、

      var arr = ['a', 'b', 'c'];   //声明一个初始值为['a', 'b', 'c']、长度为3的数组、

      var arr = ['a', 'b', 'c', ];   //后边多一个逗号的方式最好不要使用、因为不同的浏览器解析的结果不一致、

                    本人实测结果在最新版的Chrome(版本 38.0.2125.111 m)、Firefox(33.0.2)、IE11下是一致的、

      var arr = [, , , , ];  //此中方式也不要使用、

      数组可以存储任何类型的值、每个数组项的值也可以不同、

    2.数组项赋值和取值、可以通过下标方式、

      var arr = new Array(3);  //声明一个长度为3的数组、

      arr[0] = 'a';

      arr[1] = 'b';

      arr[2] = 'c';

      取值也可以通过下标、

      alert(arr[0]);   //取得数组中下标为0的项、即数组中的第一个值、

    3.数组类型的判定、

      数组是引用类型、因此不可以使用typeof方式、但JavaScript又提供了一个instanceof方法来检测给定的实例是不是Array类型、

      var arr = new Array();

      alert(arr instanceof Array);  //arr是数组、因此返回true、

      最新版本的JavaScript提供了一个原生方法、Array.isArray(arr);

      而网上给出了另外一种方式、

      Object.prototype.toString.call(arr) === '[object Array]';

    4.数组的末尾追加数据、从数组的末尾删除数据、

      var arr = ['a', 'b', 'c'];

      Arry类提供一个方法来从数组的末尾添加数据、并返回添加后数组的长度、

      var length = arr.push('d');

      var length = arr.push('e', 'f');

      Array还提供了一个方法来从数组的末尾删除数据、

      var item = arr.pop();  //删除数组的最后一项、并返回删除的项

      【注】push和pop方法都会改变原始数组arr的值、

      还可以使用concat方法、

      arr.concat('yellow');

      arr.concat([1, 2, 3, 4, 5]);

      arr.concat('black', [11, 22, 33]);

      【注】concat方法会改变原始数组arr的值、

    5.数组的开头追加数据、从数组的开头删除数据、

      var arr = ['a', 'b', 'c'];

      从数组的开头添加数据、并返回数组新的长度、

      var length = arr.unshift('d');

      var length = arr.unshift('e', 'f');

      从数组的开头删除一条数据、并返回删除的数据、

      var item = arr.shift();

      【注】unshift和shift方法都会改变原始数组arr的值、

    6.删除数组中指定位置开始、指定个数的项、在指定位置插入指定个数的项、

      var arr = ['a', 'b', 'c', 'd', 'e', 'f'];

      删除时数组指定位置、指定个数的额数据、

      var tmp = arr.splice(1, 2);   //删除数组中的'b'和'c'、并返回新的数组、并返回'b'和'c'、

      var tmp = arr.splice(1, 0, 'yellow', 'red');   //将'yellow'和'red'插入到数组的第一个和第二个位置、

      var tmp = arr.splice(1, 1, 'blue');   //将第一个位置上的值替换为'blue'、

      splice方法的第一个参数指的是数组中的位置、第二个参数要删除多少个数组项、后边的为要插入到数组中的值、

      【注】splice方法会改变原来数组的值、

    7.数组的排序、

      var arr = ['a', 'b', 'c'];

      数组项的反转、

      arr.reverse();   // 结果['c', 'b', 'a']

      数组还提供了一个方法来实现排序、默认情况下、调用arr.sort()方法(不加参数时)、会采用升序方式、但对字符串排序时'5' > '10'、因此并不适用所有情况、

      如下可以使用回调函数、回调函数的参数val1、val2为数组相邻两项的值、若val1应该位于val2之前则返回一个正数、若val1位于val2之后则返回一个负数、相等返回0

      arr.sort(function(val1, val2) {

        if (val1 < val2) { return 1;}

        else if(val1 > val2) {return -1;}

        else {return 0;}

      });

    8.数组的截取和查找、

      var arr = ['a', 'b', 'c', 'd', 'e', 'f'];

      var tmpArr = arr.slice(2);  //从下标为2的位置开始到数组的结尾、

      var tmpArr = arr.slice(2,4);    //从下标为2的位置开始到下标为4的位置结束、不包含下表为4的项、

      数组的查找、indexof方法在和数组中的项比较时使用的是全等比较、

      arr.indexof('a');   //返回true、

      arr.indexof('A');   //返回false、

    9.迭代方法every、some、forEach、filter、map、这五个方法不会改变原始数组中的值、

      var arr = [1, 2, 3, 4, 5, 6, 5, 4, 3];

      a.查找数组中的项是否全满部足给定条件、如果所有项都满足给定的条件、则返回true、否则返回false、

      var resultArr = arr.every(function(item, index, array) {   //item数组的项、index为该项的下标、array为该数组、

        return (item > 4);

      });//结果resultArr为false、

      b.查找数组中是否存在满足给定条件的项、如果有一个满足、则返回true、否则返回false、

      var resultArr = arr.some(function(item, index, array) {   //item数组的项、index为该项的下标、array为该数组、

        return (item > 4);

      });

      c.查找数组中所有满足给定条件的项、并返回满足给定条件的数组项组成新数组、

      var resultArr = arr.filter(function(item, index, array) {

        return (item > 4);

      });  //结果resultArr = ['5', '6' ,'5']

      d.循环数组中的所有项、

      arr.forEach(function(item, index, array) {

        //操作......

      });

      e.数组的map方法、

      var resultArr = arr.map(function(item, index, array) {

        return item * 2;

      });  //结果resultArr = [2, 4, 6, 8, 10, 12, 10, 8, 6];

    10.数组中还有两个特殊的方法、reduce和reduceRight、

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

      var sum = arr.reduce(function(pre, cur, index, array) {  //第一次执行时pre=1、cur=2、第二次循环执行时pre=3存储上次return的结果、cur=3、

        return pre + cur;

      });  //结果sum = 1+2+3+4+5 = 15;

      var sum = arr.reduceRight(function(pre, cur, index, array) { //第一次执行时pre=5、cur=4、第二次循环执行时pre=9存储上次return的结果、cur=3、

        return pre + cur;

      });   //结果sum=5+4+3+2+1;

  JavaScript中、数组是一个很重要的类、希望本人和各位能好好掌握、

转载于:https://www.cnblogs.com/keryang/p/keryang_javascript_20141118_01.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值