我想了解为什么这是返回窗口而不是我的对象。看看我以前的例子,这是工作。我必须失去一些明显的东西。 Javascript'这个'返回窗口,而不是我的对象
(function($) {
if (typeof a === "undefined" || a === null) a = {};
if (typeof a.b === "undefined" || a.b === null) a.b = {};
if (typeof a.b.c === "undefined" || a.b.c === null) a.b.c = {};
if (typeof a.b.c.d === "undefined" || a.b.c.d === null) a.b.c.d = {};
if (typeof a.b.c.d.e === "undefined" || a.b.c.d.e === null) a.b.c.d.e = {};
a.b.c.d.e.MyObject = {
method1: function() {
console.log(this); //Returning Window
},
method2: function() {
}
}
}(jQuery));
这是正在通过的eval()从另一个JS文件调用。
您尚未显示如何调用'method1'。这可能会使所有区别... – 2014-09-25 17:07:01
页面加载时有一个调用a.b.c.d.e.MyObject.method1 – mgoodric 2014-09-25 17:09:15
如果这是因为你做了像'window.onload = a.b.c.d.e.MyObject.method1;'那么这就是问题所在。 'this'的值由函数**调用**的方式确定,而不是按照定义的方式确定。 – Pointy 2014-09-25 17:10:31