JS:深さコピー属性はSymbolというオブジェクトです.

865 ワード

1.JSON.parse(JSON.strigify(obj)メソッドは、属性名がSymbolの属性を持つものをコピーできません.
2.Reflect.ownKeys()を利用した解決コードは以下の通りです.


	
		
		
	
	
		
		<script type="text/javascript">
			
			let name = Symbol('name')
			let say = Symbol('say')
			
			var tmp = {
				[say]: 'Hello'
			}
			
			var o = {
				[name]: 'xx',
				age: 2,
				tmp,
			}
				
			function deepCopy(obj) {
				let result = {}
				for(let tmp of Reflect.ownKeys(obj)) {
					if(typeof obj[tmp] !== 'object')
						result[tmp] = obj[tmp]
					else
						result[tmp] = deepCopy(obj[tmp])
				}
				return result
			}
			
		</script>
		
	
</code></pre> 
  <p>  。</p> 
 </div> 
</div>
                            </div>
                        </div>