对象初始化器中的局部变量

时间:2012-04-06 21:36:02

标签: javascript variables object local initializer

问题是:是否可以在JavaScript中使用对象初始值设定项创建类似的结构?

var human = new function (years) {
    var age = years;
    Object.defineProperties(this, {
        age: {
            enumerable:true,
            get: function () {
                return age;
            },
            set: function (value) {
                if( typeof value != 'number') throw 'Age must be a number';
                age = value;
            }
        }
    });
}

我试图做的事情:

var years = 0;
var human = {
    _age: years,
    get age () {
        return this._age;
    },
    set age (value) {
        if( typeof value != 'number') throw 'Age must be a number';
        this._age = value;
    }
}

这个例子更直观,更“友好”(至少对我而言),但我需要“_age”是本地的,就像前面的例子一样。

是否可以在对象初始化器中创建局部变量?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

    function myObject(){
      var privateVar = 'default';

      this.setPrivateVar = function(val){
        privateVar = val;
      }

      this.getPrivateVar= function(){
        return privateVar;
      }

    }

var obj = new myObject();
alert(obj.privateVar); //undefined
alert(obj.getPrivateVar()) // default

另一个例子:

   function myObject(){
       var privatVariable = 'default';
       return {
           getVal : function(){
                return privatVariable;
           }
       }
   }

var obj = myObject();