如果对象属性的值为“this”,会发生什么?

时间:2018-06-09 07:47:38

标签: javascript object

这里,属性“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

1 个答案:

答案 0 :(得分:2)

this作为selfobj的值,指向创建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