call入门

一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。
demo1:

var obj = {name:"ii"};
function ff(){
    console.log(this);
    //console.log(this.name);
}
ff();             //this代表windows
ff.call(obj);  //this代表obj
ff执行call方法的时候,让fn方法中的this变为第一个参数值obj。

demo2

面试题:
var color = "red";
    var a = {color:"yellow"}
    function show_color(){
        var color = "green";
        console.log(this.color);
    }
    show_color();
    show_color.call()//等效于show_color.call(window)
    show_color.call(a)

demo3

    var Pet = {
        words : '喵喵喵',
        speak : function (say) {
            console.log(say + ''+ this.words)
        }
    }
    Pet.speak('Speak'); // 结果:Speak喵喵喵

    var Dog = {
        words:'汪汪汪'
    }

    //将this的指向改变成了Dog
    Pet.speak.call(Dog, 'Speak'); //结果: Speak汪汪汪

你可能感兴趣的:(call入门)