JS高级程序设计 第五章

五、引用类型
            5.1 obj   用obj.pro 表示属性
            5.2 array length不是只读  array[length-1]  array[length]=? 直接赋值
                5.2.1 转换方法  toLocaleString()、 toString()和 valueOf()方法  join()
                5.2.2 栈方法 栈数据结构的访问规则是 LIFO(后进先出) push() pop()移除并返回最后一项
                5.2.3 队列方法 而队列数据结构的访问规则是 FIFO(First-In-First-Out,先进先出)。 shift()返回并删除第一项  unshift()
                5.2.4 重排序方法  reverse()和 sort()  返回值是经过排序之后的数组
                    sort 升序
                    function compare(val1,val2) {
                        if(val1 < val2) { return -1;} //-1 就不sort
                        else if(val1 > val2) { return 1;} //1就sort
                        else { return 0;}
                    }
                    sort(compare); //升序排列
                5.2.5 操作方法  
                    concat() 合并数组 参数可一个或多个数组 也可以是字符串 array.concat()  //返回新数组  不影响原数组
                    slice() 该方法返回起始和结束位置之间的项——但不包括结束位置的项。 参数可以为负数   //返回新数组  不影响原数组
                    splice() //影响原数组 返回删除项
                        var colors = ["red", "green", "blue"];
                        var removed = colors.splice(0,1); // 删除第一项
                        alert(colors); // green,blue
                        alert(removed); // red,返回的数组中只包含一项
                        removed = colors.splice(1, 0, "yellow", "orange"); // 从位置 1 开始插入两项
                        alert(colors); // green,yellow,orange,blue
                        alert(removed); // 返回的是一个空数组
                        removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项
                        alert(colors); // green,red,purple,orange,blue
                        alert(removed); // yellow,返回的数组中只包含一项
                5.2.6 位置方法 indexOf() lastIndexOf()  
                    var person = { name: "Nicholas" };
                    var people = [{ name: "Nicholas" }];
                    var morePeople = [person];
                    alert(people.indexOf(person)); //-1
                    alert(morePeople.indexOf(person)); //0
                5.2.7 迭代方法
                    every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
                    filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
                    forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
                    map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
                    some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
                5.2.8 归并方法
                    reduce() reduceRight() 接收 4 个参数:前一个值、当前值、项的索引和数组对象。
                    var values = [1,2,3,4,5];
                    var sum = values.reduce(function(prev, cur, index, array){
                    return prev + cur;
                    });
                    alert(sum); //15
            5.3 Date类型
                new Date() 获取当前时间和日期  
                Date.parse()和 Date.UTC()    根据特定的日期和时间创建日期对象  参数为日期格式  返回毫秒数
                Data.now()方法,返回表示调用这个方法时的日期和时间的毫秒数
                    5.3.1 日期格式化法 
                         toDateString()——以特定于实现的格式显示星期几、月、日和年;
                         toTimeString()——以特定于实现的格式显示时、分、秒和时区;
                         toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;
                         toLocaleTimeString()——以特定于实现的格式显示时、分、秒;
                         toUTCString()——以特定于实现的格式完整的 UTC 日期。
                    5.3.2 日期时间组件方法
                        getTime() 返回表示日期的毫秒数
                        getFullYear() // 返回2018
                        getMonth() // 从0 开始
                        getDate() // 1-31
            5.4 RegExp 类型  正则表达式
            5.5 function类型
                5.5.1 没有重载
                5.5.2 函数声明
                5.5.3 作为值的函数  可做参数传递 不带括号
                5.5.4 函数内部属性  argument this
                    function factorial(num){
                        if (num <=1) {
                            return 1;
                        } else {
                            return num * arguments.callee(num-1)  //   等价于num*factorial(num-1) 降低耦合
                        }
                    }
                5.5.5 函数属性和方法  
                    length 接收参数的个数  
                    prototype 是保存它们所有实例方法的真正所在。  toString()和 valueOf()等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访问罢了
                    非继承而来的方法: apply()和 call()  都是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值
                        apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。
                            function sum(num1, num2){
                                return num1 + num2;
                            }
                            function callSum1(num1, num2){
                                return sum.apply(this, arguments); // 传入 arguments 对象
                            }
                            function callSum2(num1, num2){
                                return sum.apply(this, [num1, num2]); // 传入数组
                            }
                            alert(callSum1(10,10)); //20
                            alert(callSum2(10,10)); //20
                        call()方法,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。
                            function sum(num1, num2){
                                return num1 + num2;
                            }
                            function callSum(num1, num2){
                                return sum.call(this, num1, num2);
                            }
                            alert(callSum(10,10)); //20
                        传递参数并非 apply()和 call()真正的用武之地;它们真正强大的地方是能够扩充函数赖以运行的作用域。
            5.6 单体内置对象
                Math.min()  Math.max()  Math.random()  Math.abs()  Math.pow(num,power)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值