我正在使用jQuery编写一些Javascript代码,以在浏览器中显示特别格式化的小部件。我已经取得了成功,但现在我正在重新设计我的代码有两个原因:
(1)我希望能够轻松地多次使用小部件,并有一个Javascript对象引用每个小部件。
(2)我希望按照正确的方式进行操作,以使我的代码完全可重用,并且不会在全局命名空间中留下各种对象和函数。
我遇到了作用域问题,希望解决这个问题并提高我的Javascript作用域理解。我将这个问题简化为一个小代码片段,以说明我正在做什么:
我已经声明了一个返回对象的函数。
然而,当我尝试执行函数`combinations.doThisTwice()`时,程序会抛出一个错误,指出`doThis()`超出了范围。如何在`combinations.doThisTwice`的范围内引用函数`doThis`?
更新:感谢您对我的问题的回答:在函数`doThisTwice()`内部使用`theObject.doThis()`替换`doThis()`。这样做是有效的,但我不明白为什么。
我本以为,直到对象声明结束之前,名称`theObject`都无效。我认为我可能误解了Javascript的一些基本方面...可能是因为C语言风格的语法。
(1)我希望能够轻松地多次使用小部件,并有一个Javascript对象引用每个小部件。
(2)我希望按照正确的方式进行操作,以使我的代码完全可重用,并且不会在全局命名空间中留下各种对象和函数。
我遇到了作用域问题,希望解决这个问题并提高我的Javascript作用域理解。我将这个问题简化为一个小代码片段,以说明我正在做什么:
function getMyObject() {
var theObject = {
doThis: function () { },
doThat: function () { },
combinations: {
doThisTwice: function () { doThis(); doThis(); },
doThatTwice: function () { doThat(); doThat(); }
}
};
return theObject;
}
var myObject = getMyObject();
myObject.combinations.doThisTwice();
我已经声明了一个返回对象的函数。
然而,当我尝试执行函数`combinations.doThisTwice()`时,程序会抛出一个错误,指出`doThis()`超出了范围。如何在`combinations.doThisTwice`的范围内引用函数`doThis`?
更新:感谢您对我的问题的回答:在函数`doThisTwice()`内部使用`theObject.doThis()`替换`doThis()`。这样做是有效的,但我不明白为什么。
我本以为,直到对象声明结束之前,名称`theObject`都无效。我认为我可能误解了Javascript的一些基本方面...可能是因为C语言风格的语法。