2011-05-19 9 views

Respuesta

10

¿No sería eso?

Core.registry.taskItemSelected = { 
    id: null, 
    name: null, 
    parent: null, 
    ... 
}; 
+0

Aah ... maybe 'null' debe reemplazarse por una cadena vacía. Mmm ... –

+0

¿Hay alguna manera de omitir el nulo y ejecutar como: Core.registry.taskItemSelected = {id, name, parent ...}; ¿O solo crearía propiedades numeradas con valores vacíos? – Edward

+0

Respuesta corta: No. –

1

Algo como esto debería funcionar:

var props = ["id", "name", "parent", ...]; 
Core.registry.taskItemSelected = {}; 
for (var i = 0; i < props.length; i++) 
    Core.registry.taskItemSelected[props[i]] = ""; 

Editar: tras los comentarios OP, aquí es mejor versión con mismo resultado final:

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); 

Y caso de prueba en vivo, así: http://jsfiddle.net/5fRDc/

+0

¿Puedo extender el objeto Object con su función haciendo Object.prototype.declare = function ... y que acepte una matriz como var props = [....]. Entonces podría ir como Core.registry.taskItemSelected.declare (props) ¿Cómo voy a establecer las propiedades en el objeto correcto? Usando este – Edward

+0

Disculpe @Edward pero aún no estoy familiarizado con esas cosas ... pero siéntase libre de probarlo y, si funciona, hágamelo saber. –

+0

@Edward Podría, pero es posible que desee verificar [Object.create] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create) y [Object.defineProperties] (https: //developer.mozilla.org/es/JavaScript/Reference/Global_Objects/Object/defineProperties) en su lugar – Zecc

Cuestiones relacionadas