javascript(一) 引用类型

javascript(一) 引用类型


以前进行java Web开发经常是在项目中遇到的javascript语法,然后自己上网找资料,发现很不成体系。于是就开始自己按照自己的学习进行总结。帮助自己系统的学习javascript,也和大家一起分享学习javascript的路线及知识。

本章内容来源于 Javascript高级程序设计(第三版),大家有时间可以自己找一下,自己学习。


言归正传,让我们来讨论一下javascript引用类型的第一个类型Object


  • Object
    Object是我们在编写javascript代码是经常用到的,function函数也算是O
    bject.Object类型对于存储和传输数据是非常理想的。

创建Object实例有两种方法:

 - 构造函数:
```
var person = new Object();
person.name = "lihua";
```

 - 对象自变量:
```
var person = {
    name :  "lihua"
}
```

对象自变量方式是我们经常用的一种方法,在进行函数可选参数传递时自变量方式是一个很好的选择。
对于对象的属性访问有很多种,例如

person.name 
//或者
person["name"]  

采用[]方式可以用于属性名中间有空格等的属性,例如“first name”;正常情况下我们采用点表示法。
下面我们来总结一下第二个引用类型Array


  • Array类型
    Array应该是ECMAScript中使用第二多的类型了。Javascript中的Array不同于其他语言的Array类型,它的每一项可以保存任何类型的数据;而且大小可以调整即随着数据的添加自动增长以容纳新增数据。
  • 创建Array的方式也有两种:

    • 构造函数:
    var colors = new Array();
    //或
    var colors = new Array(3);
    //或
    var colors = new Array("greg");
    //其中的new可以省略掉
    • 数组自变量法:
    var colors = ["red", "blue"];
    //注意这里是中括号[],如果写成了{},看来你想要一个对象了
    //有时有人会认为有些数据项我先不知道放什么,就多写一个,例如
    var colors = ["red", ];
    //IE会产生red和undefined两个元素的数组。其他浏览器会产生red一个元素的数组,不建议采用

    2 基础方法
    采用下表(基于0的数字索引)可以读取、修改、新增数组的值。

    var colors = ["red", "blue"]; 
    colors[0] = "green";
    alert(colors[1]);
    colors[2] = "black";
    //获取长度
    colors.length
    //利用length属性在Array末尾加入元素
    colors[colors.lentgth] = "green";
    //检测是不是数组
    colors instanceof Array
    Array.isArray(colors);
    //Array的方法
    colors.toString(); //green,blue,black,green
    colors.valueOf();
    colors.toLocaleString();
    //采用不同的分隔符获取数字项的字符串 jion
    colors.join("||"); //green||blue||black||green 
    //不传参数,或传入undefined ,都将采用逗号分隔

    3 栈方法
    栈方法是数组的一个特别的行为,计算机专业毕业的学生应该都知道数据结构的栈,一种LIFO(后进先出)的数据结构,在栈的顶部(Array数组的末尾)进行插入和移除。提供的方法为push() 和 pop()方法。

    4 队列
    有了支持栈方法的行为,怎么可能忘了队列数据结构呢;队列访问规则为FIFO(先进先出);在队末添加项 - push(),在队头移除项 - shift()。

    5 重排序方法

    var nums = [1,2,3,4]
    //反转数据项的次序
    nums.reverse();
    //排序 sort
    nums.sort()
    //sort排序采用的是字符串 升序的方式排的,这会造成 15 < 5;所以sort可以接受一个自定义的函数当排序参数:
    nums.sort(functionv1, v2) {
        if (v1 < v2) {
            return -1;
        } else if (v1 > v2) {
            return 1;
        } else {
            return 0;
        }   
     })
    //这两种排序都会改变自身,也就是数组原来的排序会消失。
    

    6 操作方法

    //1 concat 连接两个数组 基于当前数组中的所有项创建一个新数组 空参数表示创建一个副本
    var colors = colors.concat("yellow", ["black"]);
    
    //2 slice() 基于当前数组中的一或多个项创建一个新数组 slice((start[, end]])  也可以传入负数表示从最后开始
    var color2 = ["red", "green", "blue"];
    var color2 = colors.slice(1,2); // green
    
    //3 splice() 向数组中部插入、删除、替换项;返回
    //删除 splice((start, end]) 
    var removed = colors.splice(0,1); // red   colors : green, blue
    //插入 splice(start, 0, [items]) 返回删除的数组
    var removed = colors.splice(1, 0, "yellow"); //[]  colors: red, green, yellow, blue
    //替换 splice(start, deletenum, [items])  返回删除的数组
    var removed = colors.splice(1, 1, "black"); //["green"] colors: red, black, green,yellow, blue

    7 位置方法

    // indexOf(item, [start])  返回查找项在数组中的位置 没有找到返回 -1
    var numbers = [1, 2, 3, 4, 2];
        numbers.indexOf(2); //1
        numbers.indexOf(2, 3); //4     
        
        // lastIndexOf()  从数组的末尾开始向前查找

    8 迭代方法

    //1 every(function(item, index, array){}, this(该函数的作用域));
    // 对数组中的每一项运行给定的函数, 每一项返回true,则返回true
    
    //2 filter(function(item, index, array){}, this);
    // 对数组中的每一项运行给定的函数,返回该函数会返回true组成的数组
    
    //3 forEach(function(item, index, array){}, this);
    // 对数组中的每一项运行给定的函数, 没有返回值
    
    //4 map(function(item, index, array){}, this);
    // 对数组中的每一项运行给定的函数, 返回每次函数调用的结果组成的数组
    
    //5 some(function(item, index, array){}, this);
    // 对数组中的每一项运行给定的函数, 如果该函数对任一项返回true, 则返回true
    

    9 归并方法

    //1 reduce(function(prev, cur, index, array){}, baseValue) 迭代数组的所有项,从头到尾, 构建一个最终返回的值
    
    //2 reduceRight() 迭代数组的所有项,从尾到头,参数域reduce()开始
    

  • Date 类型
    Date类型是在早期Java中的java.util.Date类基础上构建。Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。
    1 创建

    var now 
    = new Date(); //新创建的对象自动获取当前日期和时间
    var mydate = new Date(mills); //返回特定时间
    
           Date.parse(date0);    //返回相应日期的毫秒数      YYYY-MM-DDTHH:mm:ss.sssZ
    
    Date.UTC(years, months [, day ...] );    // 返回表示日期的毫秒数

    2 方法

    Date.toLocaleString();  // Thursday, February 01, 2007 12:00:00 AM
    Date.toString();    // Thu Feb 1 00:00:00 PST 2007
    Date.valueOf();    //不返回字符串,而是返回日期的毫秒表示
    
    toDateString();  // 以特定于实现的格式显示星期几、月、日和年          
    toTimeString(); // 以特定于实现的格式显示时、分、秒和时区
    toLocaleDateString(); // 以特定于地区的格式显示星期几、月、日和年
    toLocaleTimeString(); // 以特定于实现的格式显示时、分、秒
    toUTCString(); // 以特定于实现的格式完整的 UTC 日期
    
    set/getTime();
    set/getFullYear();
    set/getFullMonth();
    set/getDay();   
    //还有些获取详细时间的方法
    

后面我们了解很重要的一个对象:RegExp(正则表达式)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章