【问题标题】:Which way to go with 'invalid assignment left handside' error: firefox or chrome?哪种方式可以解决“无效分配左手边”错误:firefox 或 chrome?
【发布时间】:2013-06-19 20:04:21
【问题描述】:

我有一个这样的对象:

var myObj = {
    someProp: 1,
    updateObj: function (obj) {this = obj;}
}

所以我在包含firefox 中的函数的行中得到invalid assignment left hand side,但不是在chrome 中。所以我想知道我应该选择哪一个?

谢谢。

【问题讨论】:

  • this 是预定义的关键字,不能重新定义。 Chrome 也会出现同样的错误,因为任何其他浏览器都会...
  • 我刚刚注意到chrome在我实际调用函数时也会出现这个错误,但声明时没有。
  • 是的,浏览器解析代码的方式不同,有些会事先检查语法,有些会在使用前检查(文字对象在每次使用时都会被解析)。
  • 如需更改this,请在MDN查看apply & call
  • @Teemu:感谢您的提示和链接。

标签: javascript google-chrome firefox variable-assignment


【解决方案1】:

使用类似“self”的东西来代替这个。您正在尝试分配给不允许的“this”。

var myObj = {
    someProp: 1,
    updateObj: function (obj) {self = obj;}
}

如果你真的想改变对象是什么,只需重新分配它......

var obj = {
    someProp: 1
};

obj = {
   someProp: 2
};

...或者进行更明确的更新,例如:

var obj = {
    someProp: 1,
    updateObj: function(obj) {
       this.someProp = obj.someProp;
    }
};

【讨论】:

  • selfwindow的同义词,请使用var以避免冲突。
猜你喜欢
  • 2013-10-01
  • 2010-10-10
  • 2020-08-02
  • 2017-12-30
  • 1970-01-01
  • 2011-12-24
  • 2019-09-18
  • 1970-01-01
  • 2023-01-25
相关资源
最近更新 更多