左手分配无效

时间:2013-08-23 13:41:33

标签: javascript

有人可以解释为什么以下代码会在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后,它可以正常工作。

2 个答案:

答案 0 :(得分:5)

您无法直接分配到this。这是不允许的。

您的问题中没有使用 this的代码,所以我不确定您要做什么,但是如果您想强迫this成为你可以做的一个值,如:

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

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

  var whatever = evt.target;

给你一些与this一样有用的东西。

答案 1 :(得分:2)

您无法指定此内容。使用函数调用或应用。例如,要使用obj作为this指针调用方法func,请执行:

func.apply(obj, args);