对象范围内的变量访问

时间:2012-03-02 00:10:48

标签: javascript jquery jquery-ui

如何访问“runit”和“property2”的值?

$("#selector").draggable({
    property1: "myvalue",
    property2: "myvalue",
    property3: "myvalue",
    start: function() {
        var runit = 'one value';
    },
    stop: function(){                       
        //Access Value of runit
        //Acess Value of property2
    }
});

3 个答案:

答案 0 :(得分:4)

您无法从runit访问stop(),因为其范围仅限于start()方法。您应该能够使用

访问property2
this.property2

可以runit添加到对象的属性中,例如

{
    property1: "myvalue",
    property2: "myvalue",
    property3: "myvalue",
    runit:     null,
    start: function() {
        this.runit = 'one value';
    },
    stop: function(){
        console.log(this.runit);
        console.log(this.property2);
    }
}

一个可行的例子 - http://jsfiddle.net/9rZJH/

答案 1 :(得分:2)

要访问runit,您需要在对象的范围之外定义它:

var runit;

$("#selector").draggable({
    property1: "myvalue",
    property2: "myvalue",
    property3: "myvalue",
    start: function() {
        runit = 'one value';
    },
    stop: function(){                       
        //Access Value of runit
        console.log(runit);
        //Acess Value of property2
        console.log(this.property2);
    }
});

property2 应该可以通过this.property2访问,但这取决于内部调用stop方法的方式。

答案 2 :(得分:1)

另一种选择是返回runit。我的意思是,这完全取决于你想要实现的目标:

start: function() {
    var runit = 'one value';
    // Stuff
    return { runit: runit };
},
method: function(){
    var foo = this.start().runit;
}