为什么我无法在javascript中访问对象属性?

时间:2016-07-06 09:43:43

标签: javascript node.js

我在node.js中有一个简单的循环:

exports.sample = function (req, res) {
    var images = req.query.images;
    images.forEach(function (img) {
        console.log(img);
        console.log(img.path, img.id);
        console.log(img);
    });
    res.end();
};

结果是:

{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"}
undefined undefined
{"id":42,"path":"gGGfNIMGFK95mxQ66SfAHtYm.jpg"}

我可以访问客户端的属性,但不能访问服务器端的属性。

有人可以帮我理解发生了什么吗?为什么我无法访问我的对象属性?

1 个答案:

答案 0 :(得分:3)

正如其他人所指出的那样,img很可能是字符串形式。您需要在其上运行JSON.parse()以将其转换为对象,以便您可以访问其属性。

这里我在支票内写了JSON.parse(),即只有当img的类型为#34;字符串"你应该解析它吗?但我认为,你总是将img作为一个字符串,所以你可以简单地解析它而无需检查。

exports.sample = function (req, res) {
    var images = req.query.images;
    images.forEach(function (img) {
        console.log(img);

        //Here, this code parses the string as an object
        if( typeof img === "string" )
          img = JSON.parse( img );

        console.log(img.path, img.id);
        console.log(img);
    });
    res.end();
};