在node.js ES6中,是否可以传入一个类型然后实例化它?
In node.js ES6, is it possible to pass in a type and then instantiate it?
在我的项目中,我有几个类看起来像这样:
"use strict";
var exports = module.exports = {};
var SystemsDAO = require('./dao/systems/SystemsDAO.js');
var aop = require('./dbAOPUtils.js');
var Proxy = require('harmony-proxy');
var sqlite3 = require('sqlite3').verbose();
/* Wraps a SystemServiceObject and passes in a constructed
* DAO object as an argument to specified functions. */
exports.SystemsDAOIntercepter = function(obj) {
let handler = {
get(target, propKey, receiver) {
const origMethod = target[propKey];
return function(...args) {
console.log('systemDAOIntercepter: BEGIN');
// Create a reportsdao object and proxy it through an dbSQLiteConnectionIntercepter
// (So we don't have to create it for every single method)
var systemdao = new SystemsDAO('blah');
var proxSystemDAO = aop.dbSQLiteConnectionIntercepter(systemdao, sqlite3.OPEN_READONLY);
args.push(proxSystemDAO);
console.log('propKey: ' + target[propKey]);
let result = null;
result = origMethod.apply(this, args);
console.log('systemsDAOIntercepter: END');
return result;
};
}
};
return new Proxy(obj, handler);
};
是否有可能为参数传递类型,以便我只需要一个DAOIntercepter类,而不是每个数据访问对象?
我可以看到的部分,我require()
的SystemsDAO
工作这通过传递文件名,但对于该类的实例化,我不能真正看到它是如何可能做到的。
当然-你可以像在javascript中传递任何其他变量一样传递类。
请注意,DAOType
现在已经在方法中提供并实例化了。
"use strict";
var exports = module.exports = {};
var aop = require('./dbAOPUtils.js');
var Proxy = require('harmony-proxy');
var sqlite3 = require('sqlite3').verbose();
/* Wraps a SystemServiceObject and passes in a constructed
* DAO object as an argument to specified functions. */
exports.makeInterceptor = function(DAOType, obj) {
let handler = {
get(target, propKey, receiver) {
const origMethod = target[propKey];
return function(...args) {
console.log('systemDAOIntercepter: BEGIN');
// Create a reportsdao object and proxy it through an dbSQLiteConnectionIntercepter
// (So we don't have to create it for every single method)
var dao = new DAOType('blah');
var proxSystemDAO = aop.dbSQLiteConnectionIntercepter(dao, sqlite3.OPEN_READONLY);
args.push(proxSystemDAO);
console.log('propKey: ' + target[propKey]);
let result = null;
result = origMethod.apply(this, args);
console.log('makeInterceptor: END');
return result;
};
}
};
return new Proxy(obj, handler);
};
我不得不承认,我(个人)更愿意看到类在外部实例化并通过参数注入,而不是内联创建。
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 如何将输入类型值或id从一个jsp传递到另一个jsp页面
- 如何将键入的文本从一个输入类型的文本复制到另一个
- 在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;
- 传递来自<输入类型=“;文件“;id=“;文件“/>尽管还有一个按钮点击
- 我如何才能拥有一个类型为Java.util.Arraylist的javascript对象
- 我收到一个类型错误,其中包含-"$不是函数“;使用noConflict时
- 为什么我会得到一个“;未捕获类型错误”;当我介绍D3.transition()时
- 使用 javascript 为 CSS 创建一个新的单位类型
- 我怎样才能使一个类型=“;提交”;在css中看起来像一个type="按钮”;
- 在其他类型的元素之前删除一个类型的所有元素
- 得到一个类型错误说我的websocket变量是未定义的
- Javascript将一个正则表达式字符串转换为一个类型对象
- jQuery .prev()的一个类型,不管它的's父等
- 是否有可能给JavaScript函数一个类型/类?
- 在node.js ES6中,是否可以传入一个类型然后实例化它?
- 主干和TypeScript,一个不幸福的婚姻:构建一个类型安全的“get”
- visualstudio2010-用vsdoc格式为javascript记录一个T类型的数组,我发现Bug了吗