0

オブジェクトに「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
}; 
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 に答える