从另一个函数访问函数变量

时间:2012-11-23 09:36:24

标签: javascript function variables object

我的对象中有一个函数。

我想从另一个函数访问此函数的变量。任何人都可以帮助我吗?

这是我的示例代码。 任何帮助将不胜感激。感谢。

var drops=  {
    hoverClass: "hoverme",
    greedy: true,
    accept: "#mini",
    drop: function(event,ui){
        var droppedOn2 = $(this);
        var dropped2 = $(ui.draggable);
        alert(droppedOn2.attr('id')); alert(dropped2.attr('id'));
        $(dropped2).appendTo(droppedOn2).draggable();

    },
    over: function(event, ui){
        console.log("buraya geliyorum > " + this.id);
    } 
};


$('#hebelek').sortable({
    connectWith: '#hebelek',
    cursor: 'pointer'
    }).droppable({
        accept: '#gridIcon1-2, #gridIcon2-2, #widgetIcon',
        activeClass: 'highlight',
        drop: function(event, ui) {
            var ilk = drops.droppedOn2;
            var droppedOn = $(this);
            var dropped = $(ui.draggable).clone();
            var fileName = dropped.attr('id');
            alert(droppedOn.attr('id')); alert(fileName);
            if (fileName == "gridIcon1-2"){   
               $(grid1_2Div).appendTo(droppedOn).find('.gridcell').droppable(drops)
            };

            if (fileName == "gridIcon2-2") {
               $(grid2_2Div).appendTo(droppedOn).find('.gridcell').droppable(drops)
            };

            if ((fileName == "widgetIcon") && (droppedOn.attr('id') == "hebelek")) {
               $(widgetDiv).appendTo("I WANT TO USE DROOPEDON2 ON HERE")
    };
    }

});  

3 个答案:

答案 0 :(得分:1)

为两个函数创建一个公共范围(函数包装器会这样做),并在同一范围内创建一个变量,如下所示:

(function () {
    var x = 5,
    f1 = function(){
        console.log(x);
    },
    f2 = function(){
        console.log(x);
    };

})();

答案 1 :(得分:0)

你做不到。变量的范围限定为声明它们的函数。如果要从两个不同的函数访问变量,可以在两个函数之外声明它,并从它们中访问它。例如:

var sharedVariable = 'something';
function a() {
     sharedVariable = 'a';
}
function b() {
     alert(sharedVariable); 
}

答案 2 :(得分:0)

要使函数A中计算的变量在函数B中可见,您有三个选择:

  1. 使其成为全球性的,
  2. 将其设为对象属性,或
  3. 从A中调用B时将其作为参数传递。
  4.  
    
        function A()
        {
            var rand_num = calculate_random_number();
            B(rand_num);
        }
    
        function B(r)
        {
            use_rand_num(r);
        }