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

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

python 3.5 - Pyqtgraph string in x tick -