2

js里面的call apply bind 方法

利用js里面的function函数

    function example(a,b){
        console.log(a+b)
    }
    example(1,2)

    输出 3

call方法

    var a = 1;
    function example(){
        console.log(this.a)
    }
    输出 1

this代表的是window对象,a为全局变量,全局变量实际上是window对象的一个属性。

    var a = 1;
    var obj = {
        a=9;
    };
    function example(b){
        return this.a+b
    }
    console.log(example.call(obj,2))

输出11,而不是3,实际上,call是改变函数里面的this对象的,如果以example()这种普通方式调用函数的话,this值为我们设置的全局变量。而以call方法调用时,this值为我们传进去的obj对象。

apply方法

apply方法实际上是与call方法用法相同,只不过apply方法传进去的参数是以数组形式例如

example.apply(obj,[2])

其他与call并没有区别。

bind方法

我们用上面的方法使用bind方法

    var a = 1;
    var obj = {
        a=9;
    };
    function example(b){
        return this.a+b
    }
    console.log(example.bind(obj,2))

我们会发现打印出来的是一个函数

ƒ example(b){
            return this.a+b
        }
}

我们再把参数去掉打印一下

console.log(example.bind(obj))
ƒ example(b){
            return this.a+b
        }
}

我们会发现并没有变化

实际上bind是将obj对象与函数进行绑定,如果我们需要使用,我们需要将函数重新创建一个变量,然后调用新的变量就可以了,

var newexample = example();
newexample()

如果我们再进行打印

console.log(newexample(2))

我们会得到11

好了,call apply bind 方法就介绍到这里了,你记住了吗?


Smallmotor
478 声望33 粉丝

心若向阳