javascript - Use module in Node js and reassign values -
i have javascript module simplified eye pose.
var pose = {}; var eye = {}; var left = {}; left.pitchpos = 37; left.yawpos = 47; exports.init = function () { eye.left = left; pose.eye = eye; return this; }; exports.eye = function (e) { if(typeof(e) !== "undefined"){ pose.eye = e; } return pose; }; exports.pose = pose; this how use it:
var pose = require('./pose').init(); console.log(json.stringify(pose)); pose.eye.left = { yawpos: 99, pitchpos: 11 }; console.log(json.stringify(pose)); why same output twice?
potentially have not understood modules , scopes yet, hint on doc welcome
the "problem" wrong usage of this keyword in function:
exports.init = function () { eye.left = left; pose.eye = eye; return this; }; returning this in context means "return module itself". means assignment (pose.eye.left = ...) (in context of pose.js file):
exports.eye.left = ... exports.eye function, in result assigning new member function eye (this possible, because javascript's functions objects).
a proper assignment (without modifications in pose.js file) this:
pose.pose.eye.left = ...
Comments
Post a Comment