0

嘿,所以我开始学习 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

谢谢!

4

3 回答 3

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
于 2012-12-31T06:19:41.750 回答
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;

我希望这有帮助。

于 2012-12-31T06:20:24.340 回答
0

我很难理解你的问题/问题是什么。但在我看来,Javascript 并不像 C# 或 VB.NET 或类似语言那样真正支持“属性”。您的解决方案是使用两种格式的
方法: 1. 设置值的方法。
2. 返回值的方法。
所以你的类应该有类似以下 4 种方法:

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);
        }
    }

另请注意,此函数将在类结构之外。希望这可以帮助 ;)

于 2012-12-31T06:13:45.693 回答