如何访问对象中的变量

时间:2011-07-17 00:02:43

标签: javascript

我正在创建一个具有多个功能的对象..即:

var test = {

   setA: function(){
     console.log(a)
   }

   endB: function(){
     console.log(a)
   }

}

如何声明变量a,以便只能在测试对象和该对象中的每个函数中访问它?访问它有什么独特之处吗?

我知道我可以声明一个全局变量,但宁愿避免这样做。

2 个答案:

答案 0 :(得分:4)

var test = (function() {
    var a = 'test';
    return {

        setA: function(){ console.log(a) },  // <-- was missing a comma

        endB: function(){ console.log(a) }

    };
})();

这会将a置于函数调用中,从而创建一个新的变量环境。只有在此环境中的功能才能访问它。

包含这些函数的对象从函数返回,并分配给test。这两个功能将继续可以访问a

示例: http://jsfiddle.net/yWdFw/

这种模式:

(function() {

   // your code

})();

...通常称为立即调用的函数表达式或IIFE。您正在定义一个函数,并立即调用它。因此,其返回值是分配给test的内容。

答案 1 :(得分:0)

帕特里克答案的替代方法是向对象添加属性,然后通过this

访问该对象
var test = {
   a: 'blah',

   setA: function(){
     console.log(this.a)
   },

   endB: function(){
     console.log(this.a)
   }

}