В моем проекте у меня есть несколько классов, которые выглядят следующим образом:В node.js ES6, возможно ли передать его в тип, а затем создать его экземпляр?
"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, а не один для каждого объекта доступа к данным ?
Я вижу часть, где я SystemsDAO
работает для этого, передавая имя файла, но что касается экземпляра этого класса, я не могу понять, как это можно будет сделать.
Вы пытаетесь сделать динамический вызов \ new SystemsDAO() динамическим/использовать разные объекты? Если да, да, вы можете сделать это с помощью классов ES6 (предположим, что это то, что вы подразумеваете под «типом»). Просто передайте указатель/переменную для класса, как и любую другую переменную, и вы можете называть ее «new VariableName()». – dvlsg
@ dvlsg Исправить. Я хочу, чтобы иметь возможность обменивать это для других DAO и обрезать размер моей базы кода, делая это. – leeand00