问题是:是否可以在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”是本地的,就像前面的例子一样。
是否可以在对象初始化器中创建局部变量?
答案 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();