JS把某个对象复制给另外一个对象,报了Invalid left-hand side in assignment
JS把某个对象复制给另外一个对象,报了Invalid left-hand side in assignment。
在代码的17行,我想把这个对象的左边一个对象复制给这个对象,但是始终搞不定
var MATRIX = 5;
var Point = function(x,y){
this.x = x;
this.y = y;
this.nth = (this.y*MATRIX) + this.x;
return this;
}
Point.prototype = {
constructor : Point,
left : function(){
if(this.x > 0){
return new Point(this.x-1,this.y);
}
},
moveL : function(){
//这一行总是报错 Invalid left-hand side in assignment
this = this.left();
}
}
var p = new Point(2,3);
p.left();
p.moveL();
我哪里出了问题呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
你可以看下我的extendTo函数
this对象时不能被显式赋值的,所以会报
Invalid left-hand side in assignment
非法的左赋值Uncaught ReferenceError: Invalid left-hand side in assignment
同类错误:
当尝试给一个不能被赋值的变量赋值时将发生该错误。看下面的典型例子:
在上面例子中,开发人员不小心将 == 写成了 =,错误消息“left-hand side in assignment”指等号左边包含不能被赋值的变量。
如何修复:确保不给函数函数的返回值或 this 关键字赋值。
另外, 试了下copy,hasOwnProperty()返回true:
用以下代码替换17行,可以达到复制的目的
但是,对象的prototype属性也被复制到了 this 中,所以,我自己写了一个方法
那么,调用如下:
这么一来,我的问题解决了。
PS:如果我有一千个属性呢? 我试了一下 hasOwnProperty(),但是始终返回false,期待高人指点
关于
建议你贴一下你的代码,估计是你用错了方法,
hasOwnProperty
是用于判断是否有某个属性,而不是枚举所有属性的,此外它还不能枚举原型链上的属性。如果想判断原型链上的属性,需要用in
操作符。没看出来你为什么要写的这么复杂
Object.assign(this, this.left())