this.shift = {x:this.x,y:this.y}有效但不是this.shift.x = this.x和this.shift.y = this.y?

时间:2011-05-16 23:27:07

标签: javascript

this.x = (Math.random()*canvasWidth);
this.y = (Math.random()*canvasHeight);

(1) this.shift = {x: this.x, y: this.y};

(2) this.shift.x = this.x;
    this.shift.y = this.y;

嗨,大家好,我正在玩帆布,正在创建一个粒子系统。

第一个(1)将起作用但不是第二个(2)之一为什么? 我在使用Chrome开发工具进行调试时收到错误消息“无法设置未定义的属性'x'。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

因为在示例#2中没有“this”对象的“shift”属性,所以运行时无法解析其任何“x”(或“y”)属性。您可以通过首先分配“shift”对象来使其工作:

this.shift = {};
this.shift.x = this.x;
this.shift.y = this.y;

答案 1 :(得分:2)

this.shift不存在。

您需要先编写this.shift = { }

来创建它