2012-04-13 194 views
0

如何將屬性動態添加到Javascript對象/類中?將XML名稱值對動態轉換爲對象屬性

我解析一個xml文件,爲xml元素中的每個名稱值對我試圖將該對添加爲一個Javascript對象的屬性。爲清晰起見,請參閱我的示例:

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"/> 

回答

1

您已經非常接近了。要在對象上動態調用和分配屬性,您需要使用括號表示法。

例如:

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

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

以下應爲你工作:

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