我通常会:

var x;
x = new Slider({
    'dragstart' : function(e,ui){
        // blablabla
        x.addClass('being-dragged'); // using X here.
        // blablabla
    }
});


相反,我应该有信心去做吗

var x = new Slider({
    'dragstart' : function(e,ui){
        // blablabla
        x.addClass('being-dragged'); // using X here.
        // blablabla
    }
});


我看东西的方式,构造函数时本地范围中不存在x,所以我一直担心它可能会从全局,窗口或任何找到它的地方选择另一个x

最佳答案

构造该函数时,x在本地范围中不存在


在调用之前,dragstart函数不会被“构造”。如果在调用时xundefined,它将失败。当时x成为undefined的唯一方法是,如果dragstart函数是从Slider构造函数调用的(在这种情况下,构造函数没有返回该实例,因此x仍具有其默认值)这是隐式undefined)。

否则,调用dragstart时,对x的引用将按您期望的那样解析为外部作用域中的x

10-07 23:00