Oop NodeJS defineClass-嵌套类
首先,我对OOP和NodeJS都是新手。 到目前为止,我对类的唯一体验是PHP 我正在尝试使用NPM中的defineClass模块创建一个名为Clients的javascript类。 然后,我想添加子类到它,甚至更多的功能。 我之所以希望在子类中包含一些功能,是因为其中一些可能具有相当多的功能 这是我的密码:Oop NodeJS defineClass-嵌套类,oop,node.js,Oop,Node.js,首先,我对OOP和NodeJS都是新手。 到目前为止,我对类的唯一体验是PHP 我正在尝试使用NPM中的defineClass模块创建一个名为Clients的javascript类。 然后,我想添加子类到它,甚至更多的功能。 我之所以希望在子类中包含一些功能,是因为其中一些可能具有相当多的功能 这是我的密码: var defineClass = require("defineClass").defineClass var Client = defineClass({ scpConnecte
var defineClass = require("defineClass").defineClass
var Client = defineClass({
scpConnected: false,
constructor: function (socketId) {
this.id = socketId;
},
test: function (test){
console.log('Test!!! '+ test);
}
});
var SSH = defineClass({
_super: Client,
connected: false,
busy: false,
buffer: '',
constructor: function () {
queue = [];
},
ssh: {
connect: function (IP) {
console.log('Connecting to '+ IP +'...');
}
}
});
var client = new Client('Test');
client.ssh.connect();
看起来“客户端”并没有像我期望的那样获得SSH功能
我做错了什么?:)
新代码
var defineClass = require("defineClass").defineClass
var Client = defineClass({
scpConnected: false,
constructor: function (socketId) {
this.id = socketId;
},
test: function (test){
console.log('Test!!! '+ test);
},
SSH: defineClass({
connected: false,
busy: false,
buffer: '',
constructor: function () {
queue = [];
},
connect: function (IP) {
console.log('Connecting to '+ IP +'...');
}
})
});
var client = new Client('Test');
client.SSH.connect('test');
继承显然存在一些问题 考虑以下PHP中的示例(对应于您的代码):
正如我在您的示例中看到的,您实际上是在创建客户端实例,而不是SSH:
var client = new Client('Test');
client.ssh.connect();
你应该写:
var client = new SSH('Test');
client.ssh.connect();
请注意,父类没有其子类的功能,这与继承的思想背道而驰 我的代码不是PHP,而是在NodeJS中运行的javascript,它不以同样的方式支持类。:)Javascript根本不支持类。这并不意味着您使用的库使继承与PHP完全不同(根据您的说法,PHP比JS更清楚)。您阅读了我提供的代码了吗?这里不应该是“var client=new SSH('Test');”这就是您定义SSH函数的地方。SSH是Client的子元素,我试过了。让我恼火的是,如果不更改“var-client”行,就不能添加更多的子类/功能。也许我误解了defineClass的工作方式。我想像下面的PHP示例一样进行“扩展”。因此,当您修复代码时,它会起作用,而现在您很恼火:D?我很难接受Coffeescript中的语法。这让我很困惑。请删除咖啡脚本“advice”,您将得到+1;)@madflow好的,我理解你不喜欢这个建议的原因:)@Leaom我不知道
defineClass
是如何工作的,但是我怀疑new SSH('Test')
是否能通过'Test'
客户端的初始化程序。谢谢你的更正。我想我误解了它的工作原理。如何向父类添加功能,如上面添加的新代码?我将有更多的功能(FTP、Telnet、SCP)和它们自己的命令集。
var client = new SSH('Test');
client.ssh.connect();