设置'这个'的背景在IIFE

时间:2015-05-22 07:10:47

标签: javascript

我想绑定'这个' Collection原型对象的以下代码的上下文,但现在它引用了窗口对象。

到目前为止,我已尝试将函数定义包装为IIFE,但这并未改变上下文。

我的代码

Mongo.Collection.prototype.bulk = (function(){
  var context = this; <------- should refer to the prototype's context and not the object 'bulk'

  return {
    insert: function(documents, options) {

    },
    update: function() {

    },
    upsert: function() {

    }
  };
})();

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

RGraham的评论是正确的答案。 没有IIFE的需要。你可以做一个简单的prototype.fn = function() { var context = this; }

但是如果(无论出于何种原因)你不能这样做......那么你可以将你想用作context的任何东西作为参数传递给IIFE:

Mongo.Collection.prototype.bulk = (function(context){
  return {
    insert: function(documents, options) {

    },
    update: function() {

    },
    upsert: function() {

    }
  };
})(Mongo.Collection.prototype);