javascript - 无法访问数组中的对象,只能访问对象本身

标签 javascript arrays node.js object for-loop

我有以下代码,在循环中创建对象,然后访问它们的值。现在我遇到了问题,访问对象本身可以,但不能访问包含该对象的数组。我在这里错过了什么吗?

camList = new Array();

for (var i=0; i<8; i++)
{
    var camObj = new Camera(i);
    camList.push(camObj);
    console.log(camObj.id);     //this works
    console.log(camList[i].id); //this doesnt
}

PS:在此示例中 camObj.id 仅返回 i 的当前值。

PPS:我收到 TypeError:无法读取未定义的属性“id”。

<小时/>

编辑:

我添加了完整的代码示例。

相机对象:

var Camera = function(id, cam)
{
    this.id = id;
    this.cam = cam;
    this.res =  {
                    "x" : this.cam.get(CV_CAP_PROP_FRAME_WIDTH),
                    "y" : this.cam.get(CV_CAP_PROP_FRAME_HEIGHT)
                };
    this.overlayData = new Array();
};

exports.Camera = Camera;

主要代码:

var cv      = require("opencv-node");
var Camera  = require("./cameraModule").Camera;
var camList = new Array();

for (var i=0; i<8; i++)
{
    var capture = new cv.VideoCapture();
    capture.open(i);

    if (capture.isOpened())
    {
        var camObj = new Camera(i, capture);
        camList.push(camObj);
        console.log(camList[i].id); //Here is the problem
    }
}

最佳答案

在每次循环迭代中,您都会检查capture.isOpened()。如果这是 false 会发生什么?

循环将继续而无需将任何内容插入camList。在下一个循环中,i 将递增。假设capture.isOpened() 变为true。当您插入数组时,i不会与您刚刚添加的元素对齐。 i 一个(或多个)索引太大!

不要执行camList[i].id,而是尝试执行以下操作:

camList[camList.length - 1].id

关于javascript - 无法访问数组中的对象,只能访问对象本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490206/

相关文章:

node.js - MEAN Stack平台有BI/OLAP工具吗?

javascript - 当涉及特殊字符时,如何比较 JavaScript insideHTML 返回值?

javascript - JQuery在线面试(15分钟)TestDome

javascript - Promise reject - 超时日志记录放置

javascript - 什么可能导致 ViewData ["x"].ToString 不起作用?

javascript - 在 1 级深度上翻转键值对

java - 通过for循环用url链接填充字符串数组

c++ - int* 到常量数组

angularjs - 如何在浏览器端解密在nodejs加密库上加密的数据?

node.js - 在 Mongoose 上切换数据库安全吗?