hello Leo
C:\Users\leo\workspace\node-demo\trace.js:58
console.log('jp.method ' + jp.method);
^
TypeError: Cannot read property 'method' of undefined
at User.doTrace (C:\Users\leo\workspace\node-demo\trace.js:58:32)
at Object.<anonymous> (C:\Users\leo\workspace\node-demo\app.js:7:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain [as _onTimeout] (module.js:497:10)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
var node_framework = require('./trace.js');
var user = new node_framework.User('Leo');
user.sayHello();
user.doTrace();
var meld, joinpoint, depth, padding, simpleReporter, reporter;
meld = require('./meld.js');
joinpoint = meld.joinpoint;
function indent(depth) {
if(depth > padding.length) {
padding += padding;
}
return padding.slice(0, depth-1);
}
// Call stack depth tracking for the default reporter
depth = 0;
// Padding characters for indenting traces. This will get expanded as needed
padding = '................................';
simpleReporter = {
onCall: function(info) {
console.log(indent(++depth) + info.method + ' CALL ', info.args);
},
onReturn: function(info) {
console.log(indent(depth--) + info.method + ' RETURN ', info.result);
},
onThrow: function(info) {
console.log(indent(depth--) + info.method + ' THROW ' + info.exception);
}
};
var User = function(name){
this.name = name;
};
User.prototype.sayHello = function(){
console.log('hello ' + this.name);
};
User.prototype.doTrace = function(){
if(!reporter) {
reporter = simpleReporter;
}
var jp = joinpoint();
//reporter.onCall && reporter.onCall({ method: jp.method, target: jp.target, args: jp.args.slice() });
//var jp = joinpoint();
//reporter.onReturn && reporter.onReturn({ method: jp.method, target: jp.target, result: result });
//var jp = joinpoint();
//reporter.onThrow && reporter.onThrow({ method: jp.method, target: jp.target, exception: exception });
console.log('hello ' + this.name);
console.log('jp.method ' + jp.method);
console.log('jp.target ' + jp.target);
console.log('exception ' + exception);
};
exports.User = User;