0

我为我的对象( newobj )定义了“on”事件

万一我需要访问我之前保存的这个成员。

我在事件中没有得到这个值的问题。(不存在)

我认为我需要添加闭包我尝试添加它但它没有用。

你能告诉我有什么问题吗?

基本代码

 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
}; 
4

2 回答 2

1

试试这个:

create : function() {
  var self = this;
  var newObj = createNewObj() 
  return (function(){     
    newObj.on('selectData', function(evt){
             ///some code
    }
  )})();
};
于 2012-12-23T11:59:37.117 回答
0

您可以使用绑定功能。这个简单的改变了this里面的函数。

尝试这样的事情:

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

将来的某个时候,您将能够使用词法绑定函数。看到这篇文章:)

于 2012-12-23T12:01:21.430 回答