javascript - 无法在 JavaScript 中将对象属性复制到另一个对象

标签 javascript object properties copying

这应该很简单,但我在将一个对象的属性复制到另一个对象时遇到问题。

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

参见http://jsfiddle.net/RpJKH/

否则,所发生的情况相当于手动操作:

 table.style = obj.style

当然这没有任何作用,因为 .style 是只读的。

关于javascript - 无法在 JavaScript 中将对象属性复制到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979887/

相关文章:

javascript - 如何从对象数组中获取键值列表 - JavaScript

javascript - 设置 chrome 应用的最小宽度

java - java.util.logging 配置属性文件中的 log4j.appender.console.target 等效项

javascript - Angular UI 路由器 : keeping sibling views around on state change

javascript - Three.js 从一个位置到另一个位置的动画

javascript - 在 Javascript 中为 Google Adwords 脚本 (ES5) 动态创建嵌套对象属性名称

asp.net - 如何在没有类资源管理器的情况下将属性添加到属性映射?

css - LESS 获取可继承的属性值

javascript - React.js 带 react 路由器 : Should my components 'react' to the changes in url or vice versa?

javascript - 隐藏: in title when no angular query has been made