如果不在更全局的空间中创建变量(或使用.data()
),是否可以在一个回调(即open
)中访问另一个变量(即create
}})?我知道以下内容不起作用,但想知道我的变量是否可以通过event
或ui
对象进行访问。
//var myVariable; //Without defining myVariable here or using data()
var dialog=$('#dialog').dialog({
create: function( event, ui ) {
var myVariable=123;
},
open: function( event, ui ) {
console.log(event, ui);
console.log(myVariable); //undefined
}
});
答案 0 :(得分:1)
缺点是,this
通常不会像创建和打开那样
var dialog=$('#dialog').dialog({
myVariable: 0,
create: function( event, ui ) {
this.myVariable=123;
}.bind(this),
open: function( event, ui ) {
console.log(event, ui);
console.log(this.myVariable); //undefined
}.bind(this)
});
//不确定以下是否是按照评论
中的建议进行闭包的最佳方法var dialog=$('#dialog').dialog(
(function() {
var myVariable;
return {
create: function( event, ui ) {
myVariable=123;
},
open: function( event, ui ) {
console.log(event, ui);
console.log(this.myVariable); //undefined
}
};
}())
);