Javascript Object.keys()在类中不起作用
我有一个类,它在初始化时读取LokiJS数据库,并将数据库保存在一个对象中,其中一个集合对应一个名称。我想要一个单独的数组,它只包含名称。我通常会使用Object.keys(obj)来执行此操作,但在我的例子中,它返回一个空数组。 到目前为止,我掌握的代码是: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
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]