7

Firefox では正常に動作するが、IE 8 では動作しないオブジェクト指向の JS がいくつかあります (ただし、サポートする必要があるのは IE 9 になります)。

私がするとき:「自己=これ;」IE は、エラーとしてフラグを立てます。これを自分自身に設定してから、jquery コールバックで使用して
、JS オブジェクトの他のメソッドを呼び出そうとしています。

this.upd_params = function () {
   $("#add-parameter-modal").modal('hide');

   var param_form = $('#add_param_form');
   self = this;
   this.added_params = [];
   this.removed_params = [];

   $('.unused_parameter').each(function (index, obj) {
     if (obj.checked) {
       id = self.get_idnum(obj.id);
       self.add_param2list(id);
     }
   });


   $('.used_parameter').each(function (index, obj) {
     if (!obj.checked) {
       id = self.get_idnum(obj.id);
       self.remove_param(id);
     }
   });

   this.upd_html();

   cfg_form_changed = true;

};
4

2 に答える 2

19

selfがローカル スコープの (グローバルではない) 変数であることを確認してください。

var self = this;

それ以外の場合は、self参照しwindow.selfて代入することはできません。

于 2012-08-17T21:40:16.133 に答える
2

さて、これを投稿しているのは、以下のコードのように、インライン変数の割り当てを行う場合、関連しており、他の人に役立つ可能性があると考えているためです。

var var1 = value1,
    var2 = value2,
    self= this;

IE で実装されていないという例外がスローされます。

次のように変更することで修正できます。

var var1 = value1,
    var2 = value2;

var self= this;
于 2013-07-24T13:12:42.767 に答える