这是javascript中的闭包吗?

时间:2012-12-23 11:53:08

标签: javascript

我将事件'on'定义为我的对象(newobj)

如果我需要访问此成员,我之前保存过它。

我在事件中没有获得此值的问题。 (不存在)

我认为我需要添加闭包,我试图添加它但它不起作用。

你能告诉我这是什么问题吗?

基本代码

 create : function() {
    var self = this;
    var newObj = createNewObj()         
    newObj.on('selectData', function(evt){
                 ///some code on self
            }); 

关闭选项1

 create : function() {
    var self = this;
    var newObj = createNewObj() 
             return function(){     
    newObj.on('selectData', function(evt){

                 ///some code
            })}; 

关闭选项2

 create : function() {
    var self = this;
    var newObj = createNewObj() 
            newObj.on('selectData', function(evt){

            })
             return function(){
              // some code
}; 

2 个答案:

答案 0 :(得分:1)

试试这个:

create : function() {
  var self = this;
  var newObj = createNewObj() 
  return (function(){     
    newObj.on('selectData', function(evt){
             ///some code
    }
  )})();
};

答案 1 :(得分:0)

您可以使用bind功能。这个简单改变了函数内的this

尝试这样的事情:

create : function() {
  var self = this;
  var newObj = createNewObj() 
  return (function(){     
    newObj.on('selectData', function(evt){
             ///some code
    }.bind(newObj)
  )})();
};

将来的某个时候,您将能够使用lexicaly绑定功能。 See this article :)