Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 Object.keys()在类中不起作用_Javascript_Node.js_Class_Node Webkit - Fatal编程技术网

Javascript Object.keys()在类中不起作用

Javascript Object.keys()在类中不起作用,javascript,node.js,class,node-webkit,Javascript,Node.js,Class,Node Webkit,我有一个类,它在初始化时读取LokiJS数据库,并将数据库保存在一个对象中,其中一个集合对应一个名称。我想要一个单独的数组,它只包含名称。我通常会使用Object.keys(obj)来执行此操作,但在我的例子中,它返回一个空数组。 到目前为止,我掌握的代码是: class Barbot extends EventEmitter{ constructor(HOST, PORT, ioUID, lcUID) { super(); var self = this

我有一个类,它在初始化时读取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!
        })
    }
第二次编辑: 因此,当我从这个日志记录Barbot对象时,一切似乎都初始化得很好。但当我尝试访问参数时,它们似乎不是正确的。例如,它看起来可以访问参数的原型??我包括了一张控制台输出的图片。

我看不到任何地方
var self=this“HTML对类定义有问题吗?”HTML与JavaScript类无关。执行此操作的浏览器中的JavaScript引擎是否有问题将取决于该引擎是否有ES2015(也称为“ES6”)功能还没有。最近的Chrome、Firefox和Edge有。其他人可能没有。很抱歉,我没有在上面的代码中编写它,但我的代码中确实有一个
var self=this;
。至于我得到的错误,这只是我尝试使用
self.cocktailNames
时的一个错误,因为它只是一个空数组。浏览器控制台中没有显示其他错误或者。@ChristophPohl Loki使用事件。尝试侦听警告事件。您应该在实例化类的位置添加代码以及如何使用它。我看不到任何地方
var self=this;
“HTML对类定义有问题吗?”HTML与JavaScript类无关。您正在执行此操作的浏览器中的JavaScript引擎是否存在问题将取决于该引擎是否具有ES2015(也称为“ES6”)功能。最近的Chrome浏览器、Firefox和Edge do。其他人可能不会。很抱歉,我没有在上面的代码中编写它,但我确实有一个
var self=this在我的代码中。至于我得到的错误,当我尝试使用
self.cocktailNames
时,这只是一个错误,因为它只是一个空数组。浏览器控制台中也没有显示其他错误。@ChristophPohl Loki使用事件。尝试侦听警告事件。您应该在实例化类的位置以及如何使用它添加代码。
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]