【问题标题】:the miracle of 'this' keyword JavaScript'this' 关键字 JavaScript 的奇迹
【发布时间】:2017-03-30 05:05:21
【问题描述】:
var obj = {};
obj.fn = function() {
    return this;
    }

输出:窗口对象
'this' 是否与属性 'fn' 的 objectof 'obj' 无关?

但是如果我在下面这样声明...

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

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

【问题讨论】:

  • 你是如何执行你的第一个例子的?你在做obj.fn() 还是别的什么?

标签: javascript this


【解决方案1】:

您的两个示例都应返回带有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 将始终采用包含范围的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多