我对javascript相当陌生,并试图学习一些最佳实践。我不清楚为什么我无法访问以下代码中的 ctx 引用。日志从 myApp.init() 输出 context2d 引用。我不能在 myApp 模块的 return 语句中公开私有对象变量吗?我以为我开始了解这种语言的基础知识,但对这个看似简单的概念感到沮丧。谢谢你的帮助。
window.onload = function () {
myApp.init();
console.log(myApp.ctx); // logs undefined
};
var myApp = (function () {
var canvas,
ctx,
init = function () {
canvas = document.getElementById("canvas");
ctx = canvas.getContext('2d');
console.log(ctx); // logs valid context2d object
};
return {
init : init,
ctx : ctx
};
}());
myApp.board = (function () {
var ctx = myApp.ctx;
return {
ctx : function () { console.log(ctx); } // logs undefined
};
}());