在函数/类中使变量可用

时间:2013-06-15 13:03:33

标签: javascript jquery

var g = $('#go');
var z = $('#are');

我想让y class中的变量可用于alertData和hideData。

最简单的方法是什么?

var y = {    

    alertData: function (){
        alert('z');      
    },
    hideData: function (){
        $(this).hide();
    } 

};

7 个答案:

答案 0 :(得分:3)

你总是可以这样做:

var y = {    
    g : $('#go'),
    z : $('#are'),
    alertData: function (){
        alert(this.z);      
    },
    hideData: function (){
        this.g.hide();
    } 
};

var y = {    
    alertData: function (elem){
        alert(elem.prop('id'));      
    },
    hideData: function (elem){
        elem.hide();
    } 
};

var g = $('#go');
var z = $('#are');

y.alertData(g);
y.hideData(z);

如果您正在寻找可链接的方法,那么您应该使用$.fn来创建方法。

答案 1 :(得分:0)

要么你可以制作g和z全局变量,那么它们将在你想要的任何函数中可用。

或者你可以在调用警报数据和隐藏数据时传入变量,这是首选方法,现在你的函数独立于全局变量,以后也可以在其他地方使用

答案 2 :(得分:0)

在y中创建两个局部变量并从外部分配它们,以便它们成为对象的一部分。通过这样做,您可以在y里面的任何地方使用它们。

答案 3 :(得分:0)

window.g = $('#go');
window.z = $('#are');

function somefunction(){
   console.log(g);
   console.log(z);
}

答案 4 :(得分:0)

像这样添加:

var y = {    
    g:"",
    z:"",
    alertData: function (){
        alert(this.z);      
    },
    hideData: function (){
        this.g.hide();
    } 

};

并使用y.g = anythingy.z = anything

分配值

答案 5 :(得分:0)

或者如果他们需要私密,这里是模块模式:

var y = (function() {
    var g = $('#go');
    var z = $('#are');
    return {
        alertData: function() {
            alert(z);
        }
        hideData: function() {
            z.hide();
        }
    }
}())

这将使gz对上述自调用函数返回的对象中的所有函数可见,而y.z(或y.g)会引发错误

答案 6 :(得分:0)

定义一个简单的变量在javascript中变为全局,这就是为什么它不满足oops的属性,即封装。所以如果你运行它会起作用。:

g = $('<p>');
z = $('#are');

function somefunction(){
 console.log(g);
 console.log(z);
}

somefunction()

g和z成为全局变量..