JavaScript 上下文调用模式补充,apply()/call()的实用案例


demo.html:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Title</title>  
    <script>  
        //案例一:求一个数组中的最大值 (apply可以将数组拆成一个一个的形参传给函数)  
        var arr = [9, 1, 4, 10, 7, 22, 8];  
//        Math.max(1,2,34,5);  
  
        //apply方法的第二个参数 是一个数组  
        // 在调用的时候,会将数组中的每一个元素拿出来,作为形参,挨个传递给函数  
  
        //apply方法和call方法第一个参数传递null的时候,都表示为函数调用模式  
        //也就是将this指向window  
        var max = Math.max.apply(null, arr);  //会将arr数组拆成一个一个的形参传给函数。  
        console.log(max);  


//
        //案例二:将传入的参数打印,参数之间用"-"相互连接  (apply/call可以让伪数组调用数组原型中自带的系统函数)  
        function foo() {  
//            return arguments.join("-");  // arguments是一个伪数组,不能直接使用数组原型中自带的函数  
  
            //伪数组不具有join方法,所以这个时候就要考虑去借用一下数组的join方法  
//            var str = Array.prototype.join.apply(arguments,["-"]);  
            var str = [].join.apply(arguments,["-"]);  
            return str;  
        }  
        var str = foo(1, 3, "abc", "ffff", 99) // 1-3-abc-ffff-99  
        console.log(str);  


/
        //案例三:借用构造函数 实现继承
        function Person(){  //父类
            this.name = "张莎";
            this.age = 18;
        }

        function Student(){  //子类
            Person.apply(this);  //通过apply借用父类的构造函数
        }

        var stu = new Student();
        console.log(stu);
    </script>  
</head>  
<body>  
  
</body>  
</html>  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值