这应该很简单,但我在将一个对象的属性复制到另一个对象时遇到问题。
var tableFormatting = {
table: {
style: {
width: "100px",
height: "100px"
},
border: "1px"
}
//similar code for tbody, tr, td
};
var table = document.createElement('table');
for (var p in tableFormatting.table)
table[p] = tableFormatting.table[p];
alert(table.style.width); //shows nothing. can't access it
alert(typeof(table.style.width)); //shows string, so i know it was copied or has a reference
alert(table.border); //shows 1px. this one is copied and accessible
为什么样式属性不显示?
最佳答案
您需要深度复制它们
function copyValues( dst, src ) {
for( var key in src ) {
var value = src[key];
if( typeof value == "object" ) {
copyValues( dst[key], value );
}
else {
dst[key] = value;
}
}
}
copyValues( table, tableFormatting.table );
否则,所发生的情况相当于手动操作:
table.style = obj.style
当然这没有任何作用,因为 .style
是只读的。
关于javascript - 无法在 JavaScript 中将对象属性复制到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979887/