首页 > 解决方案 > 如果对象属性的值是“this”,会发生什么?

问题描述

这里,属性“self”被赋予一个值作为“this”。当前场景的输出是什么

var obj = {
   foo: "bar",
   self: this,
   myfunc: function() {
     console.log("1 " + obj.foo);
     console.log("2 " + self.foo);
     (function() {
        console.log("3 " + obj.foo);
        console.log("4 " + self.foo);
      })();
   }
};

obj.myfunc(); //invoking the object's function

标签: javascriptobject

解决方案


this作为值给selfinobj指向创建 obj 的人的上下文。如果你直接运行它是window对象。

this在以下情况下,用于myFunc指向obj对象的上下文,因此您可以获得this.foo“bar”的值。

// context: window
var obj = {
   foo: "bar",
   self: this,
   myfunc: function() { // context: obj
     console.log("1 " + this.foo);
     console.log("2 " + this.self.foo);
     (function() { // context: window
        console.log("3 " + this.obj.foo);
        console.log("4 " + this.self.foo);
      })();
   }
};

obj.myfunc(); //invoking the object's function


推荐阅读