【问题标题】:Invalid left-hand side in assignment, "this = xxx"分配中的左侧无效,“this = xxx”
【发布时间】:2016-06-14 23:02:14
【问题描述】:

我想在String中加入拼接函数,比如Array的拼接函数。就是代码

String.prototype.splice = function(start, len, substr) {
  var p = this.split('');
  p.splice(start, len, substr);
  this = p.join('');
  return this;
}

它会显示

Uncaught ReferenceError: Invalid left-hand side in assignment(...)

【问题讨论】:

    标签: javascript this


    【解决方案1】:

    您不能重新分配this。尝试声明一个变量并使用它:

    String.prototype.splice = function(start, len, substr) {
        var p = this.split('');
        p.splice(start, len, substr);
        var joinedArray = p.join('');
        return joinedArray;
    }
    

    this 是一个引用,而不是一个对象。这就是我们所说的“不可变”。

    【讨论】:

    • 但是会和Array的拼接功能不同。 var p = [1,2,3,4]; p.splice(1,1); 那么 p 将是 [1, 3, 4]。
    【解决方案2】:

    您不能重新分配this,因为this 的值根据定义是不可变的,您不能以这种方式更改它所引用的内容。

    你需要做的就是

    替换

    this = p.join(''); return this;
    

    return p.join('');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多