对象初始值设定项中的局部变量



问题是:是否可以在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"是本地的,就像前面的例子一样。

是否可以在对象初始值设定项中创建局部变量?

您可以执行以下操作:

    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();

最新更新