Magento中資料拷貝一實現

2022-08-03 13:51:14 字數 847 閱讀 3439

mage_sales_model_quote::setcustomer方法,有這麼一行**

mage::helper('core')->copyfieldset('customer_account', 'to_quote', $customer, $this);

看下實現mage_core_helper_da

ta::copyfieldset

$fields = mage::getconfig()->getfieldset($fieldset, $root);

if (!$fields)

$sourceisarray = is_array($source);

$targetisarray = is_array($target);

$result = false;

foreach ($fields as $code=>$node)

if ($sourceisarray) else

$targetcode = (string)$node->$aspect;

$targetcode = $targetcode == '*' ? $code : $targetcode;

if ($targetisarray) else

$result = true;

}

先從配置中讀取global/fieldsets/相應的節點,每個節點的格式為key為源物件中的屬性名,v為配置;以下為乙個例項11

1customer_prefix

customer_prefix

從源物件或陣列中拷貝,如果是陣列,則用key,物件則用相應的get方法,如tax_class_id,則方法為gettaxclassid

實現乙個深拷貝

第一種 可以使用簡單的方法jsonconst person const copyperson json.parse json.stringify person 修改person內name屬性 person.name che console.log person console.log copyper...

JS中淺拷貝和深拷貝的使用,深拷貝實現方法總結

1 淺拷貝 兩個物件經過拷貝後雖然具有相同的屬性,但是他們都指向同乙個記憶體空間。操作會引起引用,同一位址的變數一起改變。let a let b a b.x 2 console.log b console.log a 2 深拷貝 兩個物件除了拷貝了一樣的屬性,沒有任何其他關聯 指向不同的記憶體空間 ...

js中資料的深淺拷貝

前言 js中資料分為基本型別和引用型別,基本型別變數在使用時可以被直接訪問,不存在深淺拷貝一說 而引用型別,由於其值變數存放在堆中,棧中存放的是指向堆中值的位址,所有在使用引用型別變數時,使用的是棧中的引用位址。深淺拷貝 簡單來說就是把object型別的資料複製後進行修改,修改後的值對原值沒有影響為...