Skip to content

Instantly share code, notes, and snippets.

View SebastianHGonzalez's full-sized avatar

Sebastian Gonzalez SebastianHGonzalez

View GitHub Profile
@SebastianHGonzalez
SebastianHGonzalez / FirstAspectGeneralizationAOP.js
Last active January 1, 2019 16:50
first attempt to generalize aspect implementation
function aspect(joinPoint, { before, around, after }) {
return function (...args) {
before && before(this, joinPoint.name, ...args);
const result = around ? around(this, joinPoint, ...args) : joinPoint.apply(this, args);
after && after(this, joinPoint.name, result, ...args);
return result;
}
}
function loggerAspect(joinPoint, logger) {
@SebastianHGonzalez
SebastianHGonzalez / InstanceMethodsAOP.js
Created January 1, 2019 16:13
Aspects applied to instance methods
function loggerAspect(joinPoint, logger) {
return function (...args) {
logger.log("logging");
return joinPoint.apply(this, args)
}
}
class Person {
constructor(name) {
this.name = name
@SebastianHGonzalez
SebastianHGonzalez / secondTryAtAOP.js
Last active January 1, 2019 16:51
second try at AOP
function loggerAspect(joinPoint, logger) {
return function (...args) {
logger.log("logging");
return joinPoint.apply(this, args)
}
}
const psyduck = {
sound: "PSYDUCK!",
cuack: function() {return this.sound}
@SebastianHGonzalez
SebastianHGonzalez / firstTryAtAOP.js
Last active January 1, 2019 17:11
My first try at AOP
function loggerAspect(joinPoint, logger) {
return (...args) => {
logger.log("logging");
return joinPoint(...args);
}
}
function add(a, b) {
return a + b;
}