Object.keys()在类

时间:2016-08-15 12:06:49

标签: javascript node.js class node-webkit

我有一个类,它在初始化时读取LokiJS数据库并将数据库保存在一个对象中,其中一个集合对应一个名称。我想要一个单独的数组,只包含名称。我通常会使用Object.keys(obj)执行此操作,但在我的情况下返回一个空数组。 我到目前为止的代码是:

class Barbot extends EventEmitter{
    constructor(HOST, PORT, ioUID, lcUID) {
        super();
        var self = this;

        // lokijs databases
        this.dbCocktails = new loki('./src/JavaScript/Cocktails.json');
        this.dbBottles = new loki('./src/JavaScript/Bottles.json');
        //parameters
        this.cocktails = {};
        this.cocktailNames = [];

        async.parallel({
            db1 : function(callback){
                self.dbCocktails.loadDatabase({}, function(){
                    callback(null);
                });
            },
            db2 : function(callback){
                self.dbBottles.loadDatabase({}, function(){
                    callback(null);
                });
            }
        }, function(err, results) {
            // initialize some objects
            self.bottles = self.dbBottles.getCollection('Flaschen');
            var cocktailArray = self.dbCocktails.listCollections();
            for (let i = 0; i < cocktailArray.length; i++) {
                self.cocktails[cocktailArray[i].name] = self.dbCocktails.getCollection(cocktailArray[i].name);
            }
            self.cocktailNames = Object.keys(self.cocktails); // somehow that doesn't work here!
        })
    }

然后从一个普通的JS脚本导入该类,该脚本从node-webkit应用程序运行(这可能是问题吗?HTML是否有类定义问题?)。因此,当我初始化此类然后记录Barbot.cocktailsBarbot.cocktailNames时,cocktails就是我所期望的,但cocktailNames是空的。当我在一个类之外运行相同的代码时,一切都按预期工作,名称数组中充满了我的鸡尾酒名称。有人可以帮我找出问题所在吗?

编辑:这是我用来启动课程的代码:

var Bb = require('./src/JavaScript/BarbotClass');
var HOST = 'localhost',
    PORT = 4223,
    ioUID = "wjY",
    lcUID = "vbn";
var Barbot = new Bb(HOST, PORT, ioUID, lcUID);
console.log(Barbot)    
console.log(Barbot.cocktailNames); // Array[0]

第二编辑: 所以当我从这里记录Barbot对象时,一切似乎都被初始化了。但是当我尝试访问参数时,它们似乎不是正确的。例如。看起来它会访问参数的原型?我收录了控制台输出的样子。  enter image description here

0 个答案:

没有答案