0

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

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

4

1 回答 1

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();
于 2012-04-06T21:43:51.533 回答