/* bind() 最简单的用法是创建一个函数,无论如何调用,它都会使用特定的 this 值进行调用。
         JavaScript 新手经常犯的一个错误是将一个方法从对象中提取出来,然后再调用,并期望方法中的 this 是原来的对象(比如在回调中传入这个方法)。
         然而,如果不做特殊处理的话,通常会丢失原始对象。使用这个函数加上原始的对象来创建一个绑定函数,巧妙地解决了这个问题:*/

        // 顶级的“this”绑定到“globalThis”。
        this.x = 9;
        const module = {
            x: 81,
            getX() {
                return this.x;
            },
        };

        // 'getX'的‘this’参数绑定到"module"
        console.log(module.getX()); //81

        const retrieveX = module.getX;
        // “retrieveX”的“this”参数在非严格模式下绑定到“globalThis”
        console.log(retrieveX());//9

        // 创建一个新函数“boundGetX”,并将“this”参数绑定到“module”。
        const boundGetX = retrieveX.bind(module);
        console.log(boundGetX());//81

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

required