JavaScript 函数方法call和apply,arguments,Date对象

函数的方法call和apply

相同:
call和apply 这两个方法都是对函数对象的方法

        function fun(){
            alert("llll");
        }
        //三种一样的效果
        fun.apply();
        //fun.call();
        //fun();

可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行的this

        function fun(){
            alert(this.name);
        }
        var obj = {name:"obj"};
        var obj2 ={name:"obj2"};
        
        fun.apply(obj);

不同:
call()方法可以将实参在对象之后依次传递

        var obj = {name:"obj"};
        var obj2 ={name:"obj2"};
        function fun(a,b){
            console.log("a=" + a);
            console.log("b=" + b);
        }
        //一个一个传
        fun.call(obj,2,3);
        //a=2
        //b=3

apply()方法需要将实参封装到一个数组中统一传递

        var obj = {name:"obj"};
        var obj2 ={name:"obj2"};
        function fun(a,b){
            console.log("a=" + a);
            console.log("b=" + b);
        }
        //数组中
        fun.call(obj,[2,3]);
        //a=2
        //b=3

this的情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this是调用方法的对象
以构造函数的形式调用时,this是新创建的那个对象
使用apply和call调用时,this是指定的那个对象


数组类对象arguments

在调用函数时,浏览器每次都会传递两个隐含的参数
1.函数的上下文this
2.封装实参的对象arguments
auguments是一个类数组对象,不是数组

        function fun(){
            //检查是否为数组
            // console.log(arguments instanceof Array);
            console.log(Array.isArray(arguments));
        }
        //false

是一个类数组对象,也可以通过索引操作数据,也可以 获取长度
在调用函数时,我们所传递的实参都会在arguments中保存
arguments.length可以用来获取实参的长度

        function fun(){
            console.log(arguments.length);
        }
        fun("hello");
        //1

我们即使不定义形参。也可以通过arguments来使用实参,只是比较麻烦arguments[0] 表示第一个实参
它里边有一个属性callee对应一个函数对象,就是当前正在指向函数的对象arguments.callee


JavaScript 的Date对象

表示一个时间

  • 当前时间
    如果直接使用构造函数创建date对象
    则会封装为当前代码执行的时间
        var d = new Date();
        console.log(d);
        //Date Mon Aug 17 2020 09:19:17 GMT+0800 (中国标准时间)
  • 创建一个指定的时间对象
    需要在构造函数中传递一个表示时间的字符串作为参数
    日期格式:月/日/年 时:分:秒
        var d2 = new Date("12/03/2016 11:10:30");
        console.log(d2);
        //Date Sat Dec 03 2016 11:10:30 GMT+0800 (中国标准时间)
  • getDate()获取日期对象是几号
        var d = new Date();
        console.log(d.getDate());
        //17
  • getDay()获取日期对象是周几
    会返回一个0-6的值,0表示周日,1-6表示周1-6
		var d = new Date();
        console.log(d.getDay());
        //1
  • getMonth()获取日期对象是几月
    会返回0-11的值,0表示1月,1表示2月。。。
		var d = new Date();
        console.log(d.getMonth());
        //8
  • getFullYear()以四位数返回年份

  • d.getHours()获取日期对象是几时
    0~23

  • d.getMinutes()获取日期对象是几分
    0~59

  • d.getSeconds()获取日期对象是几秒

  • 0~59

  • d.getMilliseconds()获取日期对象是几毫秒
    0~999

  • getTime()获取当前日期的时间戳
    时间戳:从格林威治标准时间的1970年1月1日 0时0分0秒到当前日期所花费的毫秒数

		var d = new Date();
        console.log(d.getTime());
        //1597629722329

利用时间戳来测试代码执行的性能

        var start = Date.now();
        for(var i = 0;i < 100; i++){
            console.log(i);
        }
        var finish = Date.now();
        console.log(finish - start);
        //2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值