美文网首页JS
javascript call与apply关键字

javascript call与apply关键字

作者: 酷酷de熊 | 来源:发表于2018-04-11 10:09 被阅读0次

    javascript call与apply关键字

    apply接受两个参数。第一个参数指定函数体内this对象的指向,第二个参数为一个带下标的集合。

    call则是apply的语法糖,如果参数数量固定,则可以不用带下标的集合传第二个参数。

    varfunc = function(a,b,c)

    {

        alert(a + b + c);

    }

    func.apply(null,[1,2,3]);//弹出6

    func.call(null,1,2,3);//弹出6

    当apply与call传入的第一个参数为null时,函数体内的this会指向window。

    call与apply的用途

    1、改变this的指向

    var obj1 = {

        name = 'obj1Name'

    }

    var obj2 = {

        name = 'obj2Name'

    }

    var getName = function(){

        alert(this.name);

    }

    window.name = 'windowName';

    getName();//弹出"windowName"

    getName.call(obj1);//弹出"obj1Name"

    getName.call(obj2);//弹出"obj2Name"

    当在一些情况下this被改变指向之后,可以使用call或apply来进行修正this的指向。

    document.getElementById('div1').onclick = function(){

        alert(this.id);//div1

        var fun1 = function(){

            alert(this.id);//window.id 即undefined

        }

        fun1();//普通函数的方式调用,this指代window,相当于window.id 即 undefined

    }

    由于是普通函数的方式调用,所以上面的例子中,this已经变成了window。下面看看如何使用call进行修正。

    document.getElementById('div1').onclick = function(){

        alert(this.id);

        var fun1 = function(){

            alert(this.id);

        }

        fun1.call(this);//强制函数内的this为外层的this,

    }

    相关文章

      网友评论

        本文标题:javascript call与apply关键字

        本文链接:https://www.haomeiwen.com/subject/achahftx.html