对象初始值设定项中的局部变量
问题描述:
问题是:是否有可能使用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();
你的榜样是好的,但它是一个类似于C++的形式给出,我想使用一个对象来使用纯JavaScript的aproach初始化程序 – micnic 2012-04-06 21:50:28
查看另一个示例。 – Headshota 2012-04-06 21:53:47
我喜欢第二个例子,但我仍然在寻找更容易使用的东西;) – micnic 2012-04-06 21:59:16