zoukankan      html  css  js  c++  java
  • js apply和call区别

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>apply和call</title>
        </head>
    
        <body>
            <script type="text/javascript">
                function fn(n1, n2) {
                    return this.a + n1 + n2
                }
                var a = 20;
                var o = {
                    a: 40
                }
                console.log(fn(10, 10))
                //apply的第二个参数必须是数组
                console.log(fn.apply(o, [10, 10]))
                //call的参数 一个一个传递
                console.log(fn.call(o, 10, 10))
            </script>
        </body>
    
    </html>

     模拟实现:

    Function.prototype.call2 = function(context) {
        context.fn = this;
        var args = [];
        for(var i = 1, len = arguments.length; i < len; i++) {
            args.push('arguments[' + i + ']');
        }
        eval('context.fn(' + args +')');
        delete context.fn;
    }
    
    // 测试一下
    var foo = {
        value: 1
    };
    
    function bar(name, age) {
        console.log(name)
        console.log(age)
        console.log(this.value);
    }
    
    bar.call2(foo, 'Cherry', 18); 
  • 相关阅读:
    第八周上机
    第七周作业
    第七周上机练习
    第六周作业
    第六次上机
    第五次上机
    第四周作业
    第四周上机练习
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/mengfangui/p/9360833.html
Copyright © 2011-2022 走看看