继承类不能使用node.js ES6样式类中基类中定义的变量?
我使用ES6语法样式在node.js中创建继承类,有两个类,基类用于构建mqtt客户机,继承类用于扩展基类 但是,问题是继承的类不能使用基类中定义的变量 例如,在我的基类中,有一个名为this.mqtt_client的公共变量,当我试图在继承的类中使用该变量时,它总是会出现未定义的问题 我的基类如下继承类不能使用node.js ES6样式类中基类中定义的变量?,node.js,inheritance,ecmascript-6,Node.js,Inheritance,Ecmascript 6,我使用ES6语法样式在node.js中创建继承类,有两个类,基类用于构建mqtt客户机,继承类用于扩展基类 但是,问题是继承的类不能使用基类中定义的变量 例如,在我的基类中,有一个名为this.mqtt_client的公共变量,当我试图在继承的类中使用该变量时,它总是会出现未定义的问题 我的基类如下 var mqtt = require('mqtt'), EventEmitter = require('events').EventEmitter; class MQTTBaseClass
var mqtt = require('mqtt'),
EventEmitter = require('events').EventEmitter;
class MQTTBaseClass extends EventEmitter{
constructor( option) {
super();
this.mqtt_client = null;
this.uri = option.uri;
this.mqttOptions.clientId = option.clientId;
}
init(uri, mqttOptions){
this.mqtt_client = mqtt.connect( uri , mqttOptions );
this.mqtt_client.on('connect', onConnectionSuccess);
this.mqtt_client.on('error',onConnectionError);
this.mqtt_client.on('message',onMessageReceived);
............
}
}
class MQTTClass2 extends MQTTBaseClass{
constructor(option) {
super(option);
var self = this;
var interval = setInterval(
function() {
self.mqttClient.publish('dddd' , 'ddd' , { retain: false },function(err){
})
}, 5000);
}
..............
}
错误是完全正确的<代码>mqttClient未定义
基类中不相关的
mqtt_client
字段不会更改任何内容。错误完全正确<代码>mqttClient未定义
基类中不相关的
mqtt_client
字段不会改变任何内容。我假设正在调用定义此.mqtt_client的基类init函数
问题似乎是拼写错误,您使用的是self.mqttClient
,您应该使用self.mqttu client
作为补充说明,您应该尝试使用通用变量命名方案,以避免将来出现类似问题:大多数Javascript代码都是使用camel大小写的,但没有禁止使用下划线的规则。重要的是保持一致性。我假设正在调用定义此.mqtt_客户机的基类init函数 问题似乎是拼写错误,您使用的是
self.mqttClient
,您应该使用self.mqttu client
作为补充说明,您应该尝试使用通用变量命名方案,以避免将来出现类似问题:大多数Javascript代码都是使用camel大小写的,但没有禁止使用下划线的规则。重要的是要保持一致。投票结束,因为由简单打字错误引起的问题被视为离题,可能是因为保留这些问题供将来使用没有什么价值。投票结束,因为由简单打字错误引起的问题被视为离题,可能是因为保留这些问题没有什么价值供将来使用。