Tag: oop

在封装上揭示模块与对象字面模式

我通常做每个function的组件,说我有ABCfunction,我会创build下面的JS var AbcComponent = (function(){} var initialize = function(){ }, privateMethod1 = function(){ }; return {init:initialize} )(); 并包含在app.js中,使用AbcComponent.init(); 。 几天前,我用对象字面模式准备好面向对象,我怀疑自己的写作风格。 字面模式如何封装范围,因为JavaScript是function范围?

如何创build用户定义的types(ala C#)在JavaScript中的对象中使用?

在C#中,我可以创build一个充当用户定义types的类,例如: Public Class FullName { string FirstName; string LastName; } Public Class Address { string Line1; string Line2; string City; string State; string Zip; } 然后我可以创build: Public Class Person { FullName Name; Address HomeAddress; Address WorkAddress; } 这使我可以像这样引用数据: Person Bob; Bob.WorkAddress.Line1 = "123 Sycamore Rd"; Bob.HomeAddress.Line1 = "1313 MockingBird Ln"; Bob.FullName.LastName = "Smith"; etc… 最终,我想创build一个Person的二维数组,所以我不想硬编码(预先填充?)数据,直到我知道它是什么。 […]

在OOP Node.js框架中保证接口是否为Danf?

在Danf中,如果我定义了两个类: // lib/server/listener.js 'use strict'; /** * Expose `Listener`. */ module.exports = Listener; /** * Initialize a new listener. */ function Listener() { this._listener; } Listener.defineImplementedInterfaces(['listener']); /** * @interface {listener} */ Listener.prototype.update = function() { // Do something… this.doUpdate(); } Listener.prototype.doUpdate = function() { // Do something… } // lib/server/notifier.js 'use strict'; /** * Expose […]

在类中对RESTful API方法进行sorting的最佳实践

我在TypeScript中构build了一个Node.js网站,它公开了一个RESTful API。 将不同的方法分离到不同的类/文件的最佳实践是什么? 我想为每个资源我需要创build一个单独的类。 例如: class Customers{ router.get('/customers'); router.post('/customers'); router.put('/customers'); router.delete('/customers'); } class Orders{ router.get('/orders'); router.post('/orders'); router.put('/orders'); router.delete('/orders'); } 这是真的? 而如果我有许多资源只包含一个方法,每一个? 例如: router.get('/orders'); router.post('/customers'); router.put('/products'); router.delete('/employees'); 编辑:我被回答,我可以把所有的路线在一个单一的文件,只是把处理程序分成多个文件。 所以我的问题是:如何命令/将它们LOGICALLY分为不同的文件(关于我在我的问题中写的例子)? 注意:我不需要一个技术性的程序化信息,而是一个逻辑分离的抽象解释。

无法在同一个类JS的另一个方法中调用方法

我正在尝试在同一个类的方法连接中调用方法testing。 但我所得到的是“未捕获types错误:不能读取未定义的属性'testing'。 如何访问sftpcallback中的任何variables? 为什么这样? 这是我的代码: const SSH2 = require('ssh2').Client; class SshClient { constructor(host, username, password) { this.host = host; this.username = username; this.password = password; this.port = 22; this.client = null; } test(testvar) { console.log(testvar); } connect() { this.client = new SSH2(); let client = this.client; let username = this.username; this.client.connect({ host: this.host, port: this.port, […]

JS函数原型out of context node express

在具有上下文的节点中使用原型时遇到问题。 /** * Constructor. * * @param object opts The options for the api. * @param object config The application's configuration. * @param object db The database handler. * @return void */ var clientModel = function ( opts, config, db ) { this.opts = opts; this.config = config; this.db = db; }; /** * Get […]

nodejs的类图?

我正在研究node.js. 我慢慢地“到达”。 不过,我有一个问题。 有没有一个“图”来找出类的层次结构? 我意识到,一个套接字是一个EventEmitter,但也是一个stream和…好吧,有一个易于阅读的图来找出是什么?

Node.js:如何从抽象类“inheritance”?

我正在用node.js(+ angular等)构build一个web应用程序。 应用程序将不得不从不同的提供商那里获取一些数据(类似于商品目录列表),他们以不同的方式公开他们的数据。 在这个模块中,我将对所有提供者都有一些共同的function,以及其中任何一个独特的function。 我目前(不好)的实现是这样的: var providers = [ { name: 'Apple', /* … */ }, { name: 'Samsung', /* … */ }, { name: 'Google', /* … */ }, ]; exports.syncCatalogues = function(search, callback) { var allItems = []; for (var p = 0; p < providers.length; p++) { exports.getCatalog(providers[p], function(err, catalog) { if […]

在node.js中的类实例之间共享数组

我在node.js中有一个奇怪的问题: person.js var Person; Person = (function() { Person.prototype.name = ""; Person.prototype.friends = []; function Person(name) { if (name) { this.name = name; } } Person.prototype.sayHello = function() { return console.log("Hello, my name is " + this.name + " and I have " + this.friends.length + " friends"); }; Person.prototype.addFriend = function(name) { this.friends.push(name); }; […]

如何从基于对象的语言转移到服务器端Node.js JavaScript的大项目?

我决定习惯于使用Javascript作为我的服务器端(我使用Node.js)语言来设置一个networking服务器,创build服务器deamons和更多。 这是一个相当大的项目,这意味着我必须习惯于语言,并在实际开始避免开销和不必要的麻烦之前让自己达到最佳的设置。 我一直在寻找能够解释大型项目中函数式编程基础知识的源代码。 不幸的是,大多数消息来源只谈到在浏览器中用于简单技巧的基本Javascript。 两个有用的链接,解释了如何在Javascript中创build对象: http://howtonode.org/object-graphs和http://howtonode.org/object-graphs-2 。 最后,创build一个对象似乎是最明智的: function MyObject(constructorMemberOne, constructorMemberTwo) { this.constructorMemberOne = constructorMemberOne; this.constructorMemberTwo = constructorMembertwo; this.doSomething = function doSomething() { // } } 现在,我正在寻找一个完整的Javascript语言参考。 到目前为止, https://developer.mozilla.org/en/JavaScript/Reference似乎是最完整的。 Q1:这是推荐的ECMAScript语言参考? 我问的主要是因为它是由一个主要在浏览器行业工作的公司提供的,但是Javascript并不仅仅是浏览器 – 也许有一些我不知道的来源。 其次,我习惯于为每个创build的文件名称代表类的名称创build一个新的文件。 问题2:在JavaScript(V8,Node.js)中这个build议的做法是否也是这样? 如何“导入”这个类? 这个“导入”使我对Node.js的“require”感到困惑。 我知道这是不一样的。 需要基本上加载另一个文件,然后有它自己的命名空间,这意味着它的variables超出了需要这个文件的文件的范围。 然而,对于我的类,我希望有一个方法可用于“导入”类(引号,因为我不确定这是否可能)。 例如。: var utils = require("utils/MainUtils.js"); utils.doSomething(); 据我所知,这个doSomething()方法只有在像下面这样设置时才可用: function MainUtils() { exports.doSomething = function doSomething() { […]