2

有人可以解释为什么下面Invalid left hand assignment的代码会引发错误this = evt.target;

 validateNumber: function( evt ) {

        this = evt.target;

         if (/\D/g.test(el.value)) {
            // Filter non-digits from input value.
            el.value = el.value.replace(/\D/g, '');
         }
    },

更新

我以前this用过el。替换this为后它工作正常el

4

2 回答 2

5

您不能this直接分配给。根本不允许。

您的问题中没有使用 this的代码,所以我不确定您在做什么,但是如果您想强制this成为一个值,您可以执行以下操作:

  (function() {
    if (/\D/.test(el.value)) {
      // ...
    }
  }).call(evt.target);

这将确保在该匿名函数内的代码中this具有 的值。evt.target我想不出任何重要的正常情况,因为除了不可分配之外,它this就像任何其他变量一样工作。也就是说,像

  var whatever = evt.target;

给你一些几乎一样有用的东西this

于 2013-08-23T13:43:14.393 回答
2

你不能分配这个。使用函数调用或应用。例如,要使用 obj 作为 this 指针调用方法 func,请执行以下操作:

func.apply(obj, args);
于 2013-08-23T13:44:26.703 回答