所以我的js文件中有以下结构:
var scrollingElements = {
doc_height : null,
window_height : null,
globalVar : {
init: function() {
//Get window and document initial heights
this.doc_height = $(document).height();
this.window_height = $(window).height();
}
},
headerNav : {
init: function(){
console.log(this.doc_height);
}
},
quickNavSidebar : {
init: function(){
console.log(this.doc_height);
}
}
}
$(function(){
scrollingElements.globalVar.init();
scrollingElements.headerNav.init();
scrollingElements.quickNavSidebar.init();
});
但是,此代码不起作用。 this.window_height
未达到对象类中的正确级别。我不确定如何到达更高级别以存储和访问全局变量。我想我需要做this.parent()
之类的事情,但显然这不起作用:/
有什么想法吗?
答案 0 :(得分:3)
你不能在对象内部使用它来引用你所做的变量。它们是对象的属性,可以直接访问对象内部。 这对我有用:
var scrollingElements = {
doc_height : null,
window_height : null,
globalVar : {
init: function() {
//Get window and document initial heights
doc_height = $(document).height();
window_height = $(window).height();
console.log(doc_height);
}
},
headerNav : {
init: function(){
console.log(doc_height);
}
},
quickNavSidebar : {
init: function(){
console.log(doc_height);
}
}
}
答案 1 :(得分:1)
您需要保存对封闭类的引用。尝试阅读Javascript closures
var scrollingElements = {
doc_height : null,
window_height : null,
that: this,
globalVar : {
init: function() {
//Get window and document initial heights
that.doc_height = $(document).height();
that.window_height = $(window).height();
}
},
headerNav : {
init: function(){
console.log(that.doc_height);
}
},
quickNavSidebar : {
init: function(){
console.log(that.doc_height);
}
}
}