我有一个JavaScript构造包含其所有字段的对象,和读/写功能对他们说:在对象的构造函数编程方式定义JavaScript属性
function myObj(){
var _settingsStore {
setting1: 1, //default value
setting2: 2, //default value
}
//gets/sets _settingsStore.settingName, does other stuff
function _genericSet(settingName, settingValue){}
function _genericGet(settingName){}
我想以编程方式创建围绕每个字段的属性:
for (var _setting in _settingsStore){
var _str = _setting.toString();
Object.defineProperties(this, {
_str: {
get: function() {return _genericGet(_str)},
set: function(value) {return _genericSet(_str, value)}
}
})
}
我的意图是用于_STR是纯粹的变量,并且myObj.setting1
和myObj.setting2
加以界定。相反,循环尝试定义myObj._str
两次:
Uncaught TypeError: Cannot redefine property: _str
发生了什么事?有没有办法获得我想要的行为?
编辑:为了澄清,这就是我想要有效地发生,只是循环展开了外面:
Object.defineProperties(this, {
settings1: {
get: function() {return _genericGet("settings1")},
set: function(value) {return _genericSet("settings1", value)}
},
settings2: {
get: function() {return _genericGet("settings2")},
set: function(value) {return _genericSet("settings2", value)}
},
//and so on, if there are more of them
})
这是为什么downvoted? – SLaks 2013-05-08 16:42:32
也许有人在他的移动设备上按错了箭头;)(实际上发生在我身上一次) – C5H8NNaO4 2013-05-08 16:49:14