JS中call apply bind的用法

2020-10-28 10:37:54 浏览数 (1)

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //this是什么?谁调用当前的属性或者方法的,它就是谁
        /* 2.1.bind方法作用
        修改函数或者方法中的this为指定的对象, 并且会返回一个修改之后的新函数给我们
        注意点: bind方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象的后面
        */
        //call  apply  bind修改this的
        /*call:修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数
        注意点: call方法除了可以修改this以外, 还可以传递参数, 
        */
        /*apply:修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数
        注意点: apply方法除了可以修改this以外, 还可以传递参数, 只不过参数必须通过数组的方式传递
        立即执行是不返回的.
        */
       let obj={name:"cyg"};
       /* function test(a,b)
        {
            console.log(a,b);
            console.log(this);
        }
        test(10,20);
        window.test();
        let fn=test.bind(obj,10,20);
        fn();

        test.call(obj,10,20);
        test.apply(obj,[10,20]);
        */
         function Person() {
            this.name = "lnj";
            this.say = function () {
                console.log(this);
            }
        }
        let p= new Person();
        p.say();
        let fn=p.say.bind(obj);
        fn();
        p.say.call(obj);
        p.say.apply(obj);
    </script>
</body>
</html>

0 人点赞