scope & context
by John Wick
JavaScript
/**
http://ryanmorr.com/understanding-scope-and-context-in-javascript/
**/
// closures...
function foo() {
var localVariable = 'private variable';
return function() {
return localVariable;
}
}
var getLocalVariable = foo();
console.log('getLocalVariable() =>',getLocalVariable());
console.log('getLocalVariable =>',getLocalVariable );
// module pattern
var Module = (function() {
var privateProperty = 'foo';
function privateMethod(args) {
return 'this is private method that can be access!'
}
return {
publicProperty: 'this is public prop',
publicMethod: function(args) {
return('this is public method');
},
privilegedMethod: function(args) {
return privateMethod(args);
}
};
})();
m = Module
console.log('m =>',m);
console.log('m publicProperty =>',m.publicProperty );
console.log('m publicMethod() =>',m.publicMethod() );
try {
m.privateMethod();
} catch(err) {
console.log('cannot access privateMethod() ')
}
console.log('m privilegedMethod() =>',m.privilegedMethod() );
/*
immediately-invoked function expression (IIFE) */
var jj = (function(foobarz) {
var foo, bar;
function private() {
// do something
}
foobarz.Module = {
public: function() {
// do something
}
};
})(this);
console.log(jj );