我希望将一个包含大量变量的对象从父级传递给子级。
比如我想把Person传给孩子
Person: firstName,lastName, dateOfBirth, nationality, phone, address (nested)
Address: firstLine,secondLine, zip,state, country
在以下两种方法中,推荐的解决方法是什么?
child({person,updatePerson})
对
child({firstName,updateFirstName,lastName, updateLastName..etc})
我在传递对象时遇到的问题是它破坏了封装,并且您需要小心复制对象。然而,包含属性和每个属性的更新方法的替代方案变得相当麻烦。 例如
function onUpdateZip(zip){
newPerson={...person};
newAddress={...person.address};
newPerson.address=newAddress;
newAddress.zip=zip;
updatePerson(newPerson);
}
对
function onUpdateZip(zip){
updateZip(zip);
}
我更喜欢传递一个对象,因为该对象是一个命名空间或上下文。所以我知道属性的上下文并且没有变量命名冲突。