簡體   English   中英

從單獨的JavaScript文件訪問子屬性時出現問題

[英]Problems in accessing sub properties from separate JavaScript file

我試圖從javascript文件訪問子屬性,這給了我一些奇怪的東西!

假設這是我的名為data.js的 JS文件

module.exports = {
    something: {
        name: "Something",
        num: 1,
        email: "something@gmail.com"
    },

    somethingtwo: {
        name: "Something Something",
        num: 2,
        email: "somethingtwo@gmail.com"
    },
};

在我需要訪問它的主要js文件app.js中,它看起來像

    var persons = require('./data.js');

    var getAName = function() {
    for(var name in persons) {
       console.log(name.email);
    }
}

我真的不知道出什么問題了,但是我已經嘗試了很長時間了。 預期的輸出是data.js文件中的電子郵件ID,但是相反,我得到的條目數是未定義的(如果data.js中有2個條目,那么我得到2個未定義,依此類推)。

如何在沒有這些未定義的情況下從data.js訪問電子郵件或數字?

謝謝在高級PS:console.log(name)返回的東西

好吧, name.email是未定義的,因為name是一個字符串。

你可以通過寫來測試

console.log(typeof name);

現在,要解決您的問題,您需要正確訪問屬性:

var getAName = function() {
    for (var name in persons) {
        console.log(persons[name].email)
    }
}

返回值:

something@gmail.com
somethingtwo@gmail.com

for(var name in persons) {
           //persons is actually an object not array
           //you are actually iterating through keys of an object
           //var name represent a key in that object
           console.log(persons[name]); //value corresponding to the key
}

我想這段代碼會給你想要的結果。

您應該使用console.log(persons[name].email)

要求不要自動調用模塊

var DataArchive = require('./data.js');
var module = DataArchive.module;
var persons = module.exports;

var getAName = function() {
for(var person in persons) {
    //person should be something (first iteration) and somethingtwo (second iteration)
   console.log(person.email);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM