7

我有一些面向对象的 JS 在 Firefox 中运行良好,但在 IE 8 中运行良好(尽管我们需要支持 IE 9)。

当我这样做时:“self = this;” IE 将其标记为错误。我试图将其设置为 self 然后在 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 上抛出一个异常,说 Not Implemented。

您可以通过更改为以下内容来修复它:

var var1 = value1,
    var2 = value2;

var self= this;
于 2013-07-24T13:12:42.767 回答