在Javascript中声明空对象属性的速记,有没有?
我需要在我的脚本申报了很多对象属性的,我不知道如果the're任何方式来缩短这个:在Javascript中声明空对象属性的速记,有没有?
Core.registry.taskItemSelected;
Core.registry.taskItemSelected.id;
Core.registry.taskItemSelected.name;
Core.registry.taskItemSelected.parent;
Core.registry.taskItemSelected.summary;
Core.registry.taskItemSelected.description;
这样不是工作?
Core.registry.taskItemSelected = {
id: null,
name: null,
parent: null,
...
};
像这样的东西应该工作:
var props = ["id", "name", "parent", ...];
Core.registry.taskItemSelected = {};
for (var i = 0; i < props.length; i++)
Core.registry.taskItemSelected[props[i]] = "";
编辑:下面的OP的意见,这里是更好的版本相同的最终结果:
Object.prototype.declare = function (varArray) {
for (var i = 0; i < varArray.length; i++) {
this[varArray[i]] = {};
}
};
//usage:
var props = ["id", "name", "parent"];
Core = {};
Core.declare(props);
和现场试验情况,以及: http://jsfiddle.net/5fRDc/
我可以使用Object.prototype.declare = function ...来扩展Object对象,并让它接受var props = [....]这样的数组。然后我可能会像Core.registry.taskItemSelected.declare(道具)一样去设置正确的对象中的属性?使用 – Edward 2011-05-19 10:48:09
对不起@爱德华,但我还没有(还)熟悉这些事情..但随时尝试它,以防万一它的作品让我知道。 – 2011-05-19 11:16:40
@Edward你可以,但你可能想看看[Object.create](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create)和[Object.defineProperties](https: //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties)而不是 – Zecc 2011-05-19 11:30:21
啊......也许'null'应该被空字符串替换。嗯... – 2011-05-19 10:33:30
有没有什么办法可以省略null,并像这样:Core.registry.taskItemSelected = {id,name,parent ...}; 或者这只是创建一个空值的数值属性? – Edward 2011-05-19 10:36:14
简答:第 – 2011-05-19 10:37:41