jquery-ui 对话框小部件被包装在匿名函数中(就像所有其他小部件一样)。
此函数内有一个声明为 sizeRelatedOptions
的变量。我需要从包装闭包外部向该对象添加一个键。实现这一目标的最佳方法是什么?
(function( $, undefined ) {
var sizeRelatedOptions = {
buttons: true,
height: true,
//etc
}
$.widget( "ui.dialog", {
//widget code
});
}( jQuery ) );
编辑 #1:上面的代码是 source code jQuery UI 的
编辑#2:我现在明白我不能简单地访问该变量。所以我必须解决这个问题。因此,这里有一些关于为什么我需要这个的更多信息:
我正在扩展 jQuery ui 的对话框小部件以添加另一个buttonPane。为了在将 Pane 添加到小部件后使小部件自行调整大小,我想向 sizeRelatedOption
添加一个选项。 (这就是这个问题首先要讨论的问题。)因为对话框小部件的 _options
函数会检查该选项是否作为键存在于 sizeRelatedOption
中。在这种情况下,它会调用 _size
函数来调整小部件的大小。
希望我说得清楚一点。
最佳答案
如果不直接修改源代码,您就无法做到这一点,但这不是您应该考虑的选项,因为出于多种原因,这是一种非常糟糕的做法。
该变量对该作用域是私有(private)的,除非该对象使其可以公开访问,否则您的代码必须在声明该变量的同一作用域或子作用域中运行才能访问该变量。
但是,如果您尝试更改某些配置选项,该小部件会提供 API已经为此了。
例如,
$('#dialog').dialog({
height: 500,
width: 500
});
编辑:如果您可以向我们提供更多有关您为何尝试实现此目标的详细信息,我们可能会为您提供其他替代方案。
关于javascript - 从外部访问匿名函数内部的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18233404/