美文网首页
javascript的this指向问题

javascript的this指向问题

作者: 新月丶神乐 | 来源:发表于2018-04-14 14:26 被阅读0次

    例子1:

    var obj = {
        name : 'aaa',
        getName : function () {
            console.log(this.name);
        }
    }
    console.log(window.name);
    var fn1 = obj.getName;
    obj.getName();//aaa
    var fn2 = obj.getName();//aaa
    fn1();//空 (注意: window 有一个自带的 name属性. fn1(), 的this指向window)
    fn2();//报错 
    

    这题考到了 this 的指向, 还有一个小坑, 在 window 下, 默认有一个 name 属性, 这题在 window 没有给 name 定义变量, 这题 fn1() 的时候 this 指向的 window 是一个空, 要注意

    例子2:

    var name = '222';
    var a = {
        name : '111',
        say : function () {
            console.log(this.name);
        }
    }
    var fun = a.say;
    fun();//222 (fun(),this指向window)
    a.say();//111 (a.say(),this指向a)
    var b = {
        name : '333',
        say : function (fun) {
            fun();
        }
    }
    b.say(a.say);//222 (传参fun, fun = a.say, 内部执行fun(), 和上面的结果是一样的)
    b.say = a.say;// (b.say = a.say, b内部say : function () {console.log(this.name);})
    b.say();//333 (b.say(),this指向b)
    

    例子3:

    var a = 5;
    function Test() {
        a = 0;
        console.log(a);
        console.log(this.a);
        var a;
        console.log(a);
    }
    Test(); 
    // 0
    // 5 (Test(),this指向window)
    // 0
    var test = new Test(); (new的时候会创建一个this = {})
    // 0
    // undefined (Test构造函数中没有this.a, 所以为undefined)
    // 0
    

    总结: 谁调用的这个方法,this 就指向谁

    相关文章

      网友评论

          本文标题:javascript的this指向问题

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