嘿所以我开始接受Javascript,我对对象有点麻烦。 我正在尝试创建一个包含许多方面的形状类。使用这些边,它创建了更多的特征,因此它可以存储点的位置的坐标。 我现在拥有的是一个接收大小的类,我想使用for循环来创建存储位置的“属性”。仅仅为了学习目的,我将它们设置为0,看看是否甚至可以这样做。任何关于对象的澄清将不胜感激。
function Shape(size) {
this.size = size
for(var i=0; i<size; i++){ //tries to create the properties
//this[i].posX: 0;
//this[i].posY = 0;
}
}
理想情况下,我想访问它们,因此它采用以下格式:
var triangle = new Shape(3);
triangle[0].posX = 100; // So essentially I could set this to 100, the integer in the [] would represent a side.
triangle[0].posY = 100; // etc ... for the rest of the sides
谢谢!
答案 0 :(得分:0)
我很难理解你的问题/问题是什么。但在我看来,Javascript并不像C#或VB.NET或类似语言那样真正支持“属性”。您的解决方案是使用两种格式的方法:
1.设定值的方法
2.返回值的方法
所以你的班级应该有类似这四种方法的东西:
setPosX(var posx)
getPosX()
setPosY(var posy)
getPosY()
然后你只需创建一个数组:
var triangles = new Array();
通过for循环给出你的值:
function Shape(size) {
for(var i=0; i<size; i++){ //tries to create the properties
triangles[i].setPosX(0); // or any other value
triangles[i].setPosY(0);
}
}
另请注意,此函数将在类结构之外。 希望这会有所帮助;)
答案 1 :(得分:0)
请尝试以下代码。这就是你想要的吗?
function Shape(size) {
var arr = new Array(size);
for(var i=0; i <size; i++){ //tries to create the properties
arr[i] = {
posX: 0,
posY: 0
};
//arr[i] = {};
//arr[i].posX = 0;
//arr[i].posY = 0;
}
return arr;
}
现在你可以做到:
var triangle = new Shape(3);
triangle[0].posX = 100; // So essentially I could set this to 100, the integer in the [] would represent a side.
triangle[0].posY = 100; // etc ... for the rest of the sides
答案 2 :(得分:0)
由于形状可以有不同数量的边,我建议创建一个 数组 的点作为Shape类的属性。
function Shape(size) {
this.size = size;
this.point = new Array();//stores an Array of Points
for(var i=0; i<size; i++){
this.point[i] = new Point(0, 0);
}
}
function Point(x, y){
this.posX = x || 0;
this.posY = y || 0;
};
这样您就可以使用以下代码创建一个三角形:
// Creates a triangle with the points at (100, 100), (0, 0), and (0, 0)
var triangle = new Shape(3);
triangle.point[0].posX = 100;
triangle.point[0].posY = 100;
我希望这会有所帮助。