嗨,我试图了解 javascript oop 并遇到问题,我正在构建一个构造函数类,在类中我定义属性现在我想定义一些改变这些属性的方法,但是当我实例化对象时并调用控制台告诉我属性未定义的方法。我想这可能与范围有关,我一直在 google 周围搜索,但所有介绍性文章都基本相同。
这是代码的简化版本。在我的示例代码中,我想要一个形状在画布上移动。它自己的对象将具有控制其运动的方法(现在只是)。当我实例化对象时,我调用它的 moveRight 方法,该方法应该改变它的 xy 坐标。然后每一秒我都会在一个单独的函数中将它渲染到屏幕上,该函数调用对象 x 和 y 属性
//这里我定义对象
function Mechanoid(){
//object properties
this.life=100;
this.x=500;
this.y=200;
this.anArray=new Array(0, 0); //can i create an array like this? i know it works when called from outside the object
//object methods
this.moveAround=function(){
var clock=setInterval(Function () {
this.x=this.x+1; //console log says undefined
this.y=this.y+1;
this.anArray[0]=this.x; //console says cannot read propety of null
this.anArray[1]=this.y;
},1000);
}
}
//then instanciate
var mech=new Mechanoid;
mech.moveAround(); // calls method to change object properties
//A request for the x any y coordinates of mech object will be called in a render function where it
//will be drawn to the canvas.
谁能告诉我为什么无法从对象方法中访问这些属性?我必须做什么才能访问它们?谢谢...语法中可能缺少括号或我在运行中编写的内容我认为原始代码中没有语法错误,我认为这不是问题所在。