javascript - In node.js ES6, is it possible to pass in a type and then instantiate it? -
in project have several classes this:
"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 systemserviceobject , passes in constructed * dao object argument specified functions. */ exports.systemsdaointercepter = function(obj) { let handler = { get(target, propkey, receiver) { const origmethod = target[propkey]; return function(...args) { console.log('systemdaointercepter: begin'); // create reportsdao object , proxy through dbsqliteconnectionintercepter // (so don't have create 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); };
is possible pass in type argument need single daointercepter class, , not 1 each data access object?
i can see part require()
systemsdao
working passing file name, instantiation of class, can't see how possible that.
sure - can pass classes around other variable in javascript.
note daotype
provided , instantiated inside method, now.
"use strict"; var exports = module.exports = {}; var aop = require('./dbaoputils.js'); var proxy = require('harmony-proxy'); var sqlite3 = require('sqlite3').verbose(); /* wraps systemserviceobject , passes in constructed * dao object argument 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 reportsdao object , proxy through dbsqliteconnectionintercepter // (so don't have create 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); };
i have admit (personally) prefer see class instantiated externally , injected in through arguments, however, instead of creating inline.
Comments
Post a Comment