'this'关键字JavaScript的奇迹

时间:2017-03-30 05:05:22

标签: javascript this

var obj = {};
obj.fn = function() {
    return this;
    }

输出:窗口对象
是'这'不关心'obj',它是属性'fn'的对象?

但如果我在下面声明如下......

var obj = { 
    fn: function() { 
        console.log(this);
       }
    }

输出是...... 对象对象
他们不一样吗?

1 个答案:

答案 0 :(得分:3)

您的示例都应使用this的控制台日志返回对象本身,在全局范围内阅读this时会记录窗口对象:

    var obj = {};
    obj.fn = function() {
      console.log(this);
    }

    // logs window
    console.log(this);

    // logs object
    obj.fn();

    var obj1 = { 
      fn: function() { 
        console.log(this);
      }
    }

    // logs object
    obj1.fn();

this将始终采用包含范围的值