访问变量在另一个回调中定义

时间:2015-10-16 12:37:54

标签: javascript jquery jquery-ui

如果不在更全局的空间中创建变量(或使用.data()),是否可以在一个回调(即open)中访问另一个变量(即create }})?我知道以下内容不起作用,但想知道我的变量是否可以通过eventui对象进行访问。

//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
    }
});

1 个答案:

答案 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
            }
        };
    }())
);