79-82 call和apply,arguments,Date对象,Math

call和apply

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
    <script>

        function fun(a,b) {
            //alert(this);
            console.log("a="+a);
            console.log("b="+b);
        }
        //call()和apply()
        //这两个方法都是函数对象的方法,需要通过函数对象来调用
        //当对函数调用call()和apply()都会调用函数执行
        //在调用call()和apply()可以将一个对象指定为第一个参数
        //此时这个对象将会成为函数执行时的 this
        //call () 方法可以将实参在对象之后依次传递
        //apply () 方法需要将实参封装到一个数组中统一传递
        //this 的情况:
        // 1. 以函数形式调用时,this 永远都是 window
        // 2. 以方法的形式调用时,this 是调用方法的对象
        // 3. 以构造函数的形式调用时,this 是新创建的那个对象
        // 4. 使用 call 和 apply 调用时,this 是指定的那个对象

        var obj = {
            name: "obj",
            sayName:function() {
                alert(this.name);
            }
        };
        var obj2 = {
            name: "obj2"
        };
       // obj.sayName.apply(obj2);
        fun.call(obj,1,2);

    </script>
</body>

</html>

arguments

在调用函数时,浏览器每次都会传递进两个隐含的参数

函数的上下文对象

封装实参的对象arguments

arguments是一个类数组对象(不是数组),它可以通过索引来操作数据,也可以获取长度

在调用函数时,我们所传递的实参都会在argument中保存

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
    <script>
       //arguments.length可以用来获取实参的长度
       //我们即使不定义形参,也可以通过argunments来使用实参,只不过比较麻烦
       //arguments[0]表示第一个参数
       //arguments[1]表示第二个参数
       //它里边有一个属性叫做callee,这个属性对应一个函数对象,就是当前正在指向的函数的对象

        function fun(a,b) {
            console.log(arguments[1]);
            console.log(arguments.callee==fun);
            console.log(arguments instanceof Array);
            console.log(arguments.length);
            console.log(Array.isArray(arguments));
        }
        fun("hello",true);
        
       
    </script>
</body>

</html>

Math

  • Math和其他的对象不同,它不是一个构造函数;它属于一个工具类,不用创建对象,它里边封装了数学运算相关的属性和方法
html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
    <script>

        //Math
        console.log(Math.PI);
        //abs()
        console.log(Math.abs(-10));
        //ceil  对一个数向上取整
        console.log(Math.ceil(5.3));
        //floor  对一个数向下取整
        console.log(Math.floor(5.8));
        
    </script>
</body>

</html>

Date对象

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
    <script>

        //Date对象
        //在JS中使用Date对象来表示一个时间

        //创建一个Date对象
        //如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
        var d=new Date();
        console.log(d);

        //创建一个指定的时间,需要在构造函数中传递一个表示时间的字符串作为参数
        //格式:月份/日/年份 时:分:秒
        var d2=new Date("11/29/25 20:01:50");
         console.log(d2);

         //获取日期时几日
         var date=d2.getDate();
         var day=d2.getDay();
        console.log("date="+date);

        //一周中的某一天
        console.log("day="+day);
    </script>
</body>

</html>
相关推荐
Hilaku8 分钟前
为什么死磕 1px 的团队,用户体验反而更差?
前端·javascript·程序员
Brilliantwxx12 分钟前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件
lichenyang45320 分钟前
鸿蒙元服务跳转 H5 太慢?从 Web 内核预热、网络预连接到骨架屏的完整优化方案
前端
wuyk55522 分钟前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
aa小小29 分钟前
大屏的数据应该怎么做“实时更新“?大屏页面如果一直开着不关(比如挂了几天几夜),你觉得可能会出现什么问题,需要怎么预防?
前端·数据可视化
邪修king31 分钟前
Re:Linux 系统篇(三十四):进程间通信开篇Chapter1 —— 匿名管道 pipe 深度拆解与代码实战
android·linux·运维·开发语言
陈拉斯37 分钟前
给公司年会写了个大屏抽奖系统:动画在前端跑,凭什么说结果没被改?
javascript
aa小小1 小时前
Proxy 响应式原理
前端·proxy