Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试通过for循环声明对象的多个特征_Javascript_Object - Fatal编程技术网

Javascript 尝试通过for循环声明对象的多个特征

Javascript 尝试通过for循环声明对象的多个特征,javascript,object,Javascript,Object,嘿,所以我开始学习Javascript,我在对象方面有点麻烦。 我正在尝试创建一个包含多个边的shape类。使用这些边,它可以创建更多的特征,以便存储点位置的坐标。 我现在拥有的是一个接受大小的类,我想使用for循环来创建存储位置的“属性”。为了便于学习,我将它们设置为0,看看是否有可能这样做。如对物品有任何澄清,将不胜感激 function Shape(size) { this.size = size for(var i=0; i<size; i++){ //tries

嘿,所以我开始学习Javascript,我在对象方面有点麻烦。 我正在尝试创建一个包含多个边的shape类。使用这些边,它可以创建更多的特征,以便存储点位置的坐标。 我现在拥有的是一个接受大小的类,我想使用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;
    }
}

谢谢

我很难理解你的问题/问题是什么。但在我看来,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);
        }
    }
函数形状(大小){

对于(var i=0;i请尝试下面的代码。这是您想要的吗

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

由于形状可以有不同数量的边,因此我建议创建点的数组,作为形状类的属性

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

我希望这能有所帮助。

是的,我最后想到了数组,但我觉得可能有一种比创建新对象数组更简单的方法。谢谢
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
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;