2012-04-13 8 views
0

Wie kann ich einem JavaScript-Objekt/Klasse dynamisch Attribute hinzufügen?XML-Name-Wert-Paare dynamisch in Objektattribute konvertieren

Ich analysiere eine XML-Datei, für jedes Name-Wert-Paar in einem XML-Element Ich versuche, dieses Paar als ein Attribut zu einem Javascript-Objekt hinzuzufügen. Siehe mein Beispiel für Klarheit:

function MyObject(nType) 
{ 
    this.type = nType; 
} 

MyObject.prototype.parseXMLNode(/*XML Node*/ nodeXML) 
{ 
    var attribs = nodeXML.attributes; 
    for (var i=0; i<attribs.length; i++) 
     this.(attribs[i].nodeName) = attribs[i].nodeValue; // ERROR here 
} 

// Where the xml would look like 
<myobject name="blah" width="100" height="100"/> 

Antwort

1

Sie sind sehr nah dran. Um Attribute für ein Objekt dynamisch aufzurufen und zuzuweisen, sollten Sie die Klammern-Notation verwenden.

Zum Beispiel:

person = {} 
person['first_name'] = 'John' 
person['last_name'] = 'Doe' 

// You can now access the values using: 
// person.first_name OR person['last_name'] 

Die folgende Beschreibung ist für Sie arbeiten:

MyObject.prototype.parseXMLNode(nodeXML) { 
    var attrs = nodeXML.attributes, 
     length = attrs.length; 

    for(var i=0; i < length; i++) { 
     this[attrs[i].nodeName] = attrs[i].nodeValue; 
    } 
} 
Verwandte Themen