在对象内的Javascript IIFE中使用它

时间:2016-12-20 17:30:10

标签: javascript object iife

我想用'this'代替IIFE中对象的名称。

var ops = {
   start: (function (){
      socket.on('set', function(data) { 
         ops.getData();             
    });
  }()),
  getData: function (){
      ... 
  }
};

怎么做?

3 个答案:

答案 0 :(得分:0)

你做不到。更不用说您的函数不会返回任何要分配给ops.start的内容。

var ops = {
  start: function (){
    var self = this;
    socket.on('set', function(data) { 
      self.getData();             
    });
  }
};

ops.start();

答案 1 :(得分:0)

如果需要,可以在函数上下文中使用getter和closure。 Getter自动调用函数:

var ops = {
   get start() {
      return socket.on('set', function(data) { 
         ops.getData();             
    });
  },
  getData: function (){
  }
};

现在你可以参考ops.start

答案 2 :(得分:-1)

您可以创建一个新对象并使用它的原型来访问“this”:

var o = Object.create(Object.prototype, {
  data: {
    value: 12
  },
  getobject: {
    get: function() {
      return this.data;
    }
  }
});

o.getobject;