1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3724],{6053:(n,s,a)=>{a.r(s),a.d(s,{data:()=>p});const p={key:"v-5c1251c6",path:"/articles/JavaScript/JS%E6%B5%85%E6%8B%B7%E8%B4%9D%E4%B8%8E%E6%B7%B1%E6%8B%B7%E8%B4%9D.html",title:"JS æµ
æ·è´ä¸æ·±æ·è´",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"æ°æ®ç±»å",slug:"æ°æ®ç±»å",children:[]},{level:2,title:"å卿¹å¼",slug:"å卿¹å¼",children:[]},{level:2,title:"为ä»ä¹è¦è¿è¡æ·è´ï¼",slug:"为ä»ä¹è¦è¿è¡æ·è´",children:[]},{level:2,title:"æµ
æ·è´",slug:"æµ
æ·è´",children:[{level:3,title:"Object.assign()",slug:"object-assign",children:[]},{level:3,title:"æ©å±è¿ç®ç¬¦",slug:"æ©å±è¿ç®ç¬¦",children:[]}]},{level:2,title:"æ·±æ·è´",slug:"æ·±æ·è´",children:[{level:3,title:"JSON.stringify()",slug:"json-stringify",children:[]},{level:3,title:"è§£å³å¾ªç¯å¼ç¨çé®é¢",slug:"è§£å³å¾ªç¯å¼ç¨çé®é¢",children:[]},{level:3,title:"èªå·±å®ç°æ·±æ·è´",slug:"èªå·±å®ç°æ·±æ·è´",children:[]}]},{level:2,title:"使ç¨å¾ªç¯",slug:"使ç¨å¾ªç¯",children:[]},{level:2,title:"åè",slug:"åè",children:[]}],filePathRelative:"articles/JavaScript/JSæµ
æ·è´ä¸æ·±æ·è´.md",git:{}}},1278:(n,s,a)=>{a.r(s),a.d(s,{default:()=>x});var p=a(6252);const t=(0,p.uE)('<h1 id="js-æµ
æ·è´ä¸æ·±æ·è´" tabindex="-1"><a class="header-anchor" href="#js-æµ
æ·è´ä¸æ·±æ·è´" aria-hidden="true">#</a> JS æµ
æ·è´ä¸æ·±æ·è´</h1><h2 id="æ°æ®ç±»å" tabindex="-1"><a class="header-anchor" href="#æ°æ®ç±»å" aria-hidden="true">#</a> æ°æ®ç±»å</h2><ul><li>åºæ¬ç±»åï¼undefinedãnullãBooleanãStringãNumberãSymbol</li><li>å¼ç¨ç±»åï¼ObjectãArrayãDateãFunctionãRegExp ç</li></ul><h2 id="å卿¹å¼" tabindex="-1"><a class="header-anchor" href="#å卿¹å¼" aria-hidden="true">#</a> å卿¹å¼</h2><ul><li>åºæ¬ç±»åï¼åºæ¬ç±»åå¼å¨å
åä¸å æ®åºå®å¤§å°ï¼ä¿åå¨<code>æ å
å</code>å½ä¸ï¼ï¼ä¸å
å«<code>éå
</code>ä¸çåéï¼</li><li>å¼ç¨ç±»åï¼å¼ç¨ç±»åä¿åå¨<code>å å
å</code>ä¸ï¼èæ å
ååå¨çæ¯å å
åä¸çåå¨<code>å°å</code>(å¼ç¨)ã</li></ul><h2 id="为ä»ä¹è¦è¿è¡æ·è´" tabindex="-1"><a class="header-anchor" href="#为ä»ä¹è¦è¿è¡æ·è´" aria-hidden="true">#</a> 为ä»ä¹è¦è¿è¡æ·è´ï¼</h2><p>ç个ä¾åï¼</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">let</span> obj1 <span class="token operator">=</span> <span class="token punctuation">{</span>\n value<span class="token operator">:</span> <span class="token string">"a"</span><span class="token punctuation">,</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> obj2 <span class="token operator">=</span> obj1<span class="token punctuation">;</span>\nobj2<span class="token punctuation">.</span>value <span class="token operator">=</span> <span class="token string">"b"</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//{ value: 'b' }</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1 <span class="token operator">===</span> obj2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// true</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>æ¬æ¥åªæ³æ¹å<code>obj2</code>ç <code>value</code> çå¼ï¼ä½æ¯æ¹åä¹åè¿<code>obj1</code>çå¼ä¹ä¸åæ¹åäºï¼å¾æ¾ç¶ï¼è¿ä¸æ¯æä»¬æ³è¦ççç»æã</p><p>å 为对象æ¯å¼ç¨ç±»åï¼æä»¥èµå¼æ¶çæä½ä»
æ¯èµäºç¸åçå°åï¼å½å¯¹å
¶ä¸ä¸ä¸ªå¯¹è±¡è¿è¡æä½æ¶ï¼å°±ä¼å½±åå
¶ä»ç对象ãè§£å³è¿ä¸ªé®é¢å°±éè¦ä½¿ç¨æ·è´äºã</p><p>æ·è´çæ¹å¼å两ç§ï¼</p><ul><li>æµ
æ·è´ <ul><li>åºæ¬ç±»åï¼æ·è´å¼</li><li>å¼ç¨ç±»åï¼æ·è´å¯¹è±¡å¼ç¨ã</li></ul></li><li>æ·±æ·è´ <ul><li>åºæ¬ç±»åï¼æ·è´å¼</li><li>å¼ç¨ç±»åï¼ä¼å建ä¸ä¸ªæ°çå¼ç¨ï¼å°ä¹åçå¯¹è±¡å®æ´çæ·è´ä¸ä»½åºæ¥ï¼å¹¶æ·»å è³æ°çå¼ç¨å½ä¸ã</li></ul></li></ul><h2 id="æµ
æ·è´" tabindex="-1"><a class="header-anchor" href="#æµ
æ·è´" aria-hidden="true">
1#</a> æµ
æ·è´</h2><h3 id="object-assign" tabindex="-1"><a class="header-anchor" href="#object-assign" aria-hidden="true">#</a> Object.assign()</h3><p>使ç¨åçç <code>Object.assign()</code> æ¹æ³å°±å¯ä»¥å®ç°å¼ç¨ç±»åçæµ
æ·è´</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">let</span> obj1 <span class="token operator">=</span> <span class="token punctuation">{</span>\n value<span class="token operator">:</span> <span class="token string">"a"</span><span class="token punctuation">,</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> obj2 <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">assign</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span> obj1<span class="token punctuation">)</span><span class="token punctuation">;</span>\nobj2<span class="token punctuation">.</span>value <span class="token operator">=</span> <span class="token string">"b"</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//{ value: 'a' }</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>使¯å¦ææ·è´çæºå¯¹è±¡å½ä¸å
å«å¯¹è±¡æ¶ï¼<code>OBject.assign()</code>æ¹æ³åªä¼æ·è´å¯¹è±¡çå¼ç¨å°å</p><h3 id="æ©å±è¿ç®ç¬¦" tabindex="-1"><a class="header-anchor" href="#æ©å±è¿ç®ç¬¦" aria-hidden="true">#</a> æ©å±è¿ç®ç¬¦</h3><p>ä½¿ç¨ ES6 çæ©å±è¿ç®ç¬¦ä¹å¯ä»¥è¾¾å°æµ
æ·è´çææ</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">let</span> arr1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> arr2 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span>arr1<span class="token punctuation">]</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>arr1 <span class="token operator">===</span> arr2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//false</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>è¾åº <code>false</code> 就说æå
éæåäºï¼å¯¹è±¡å¯ä»¥è¿ä¹æ</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">let</span> obj1 <span class="token operator">=</span> <span class="token punctuation">{</span>\n value<span class="token operator">:</span> <span class="token string">"a"</span><span class="token punctuation">,</span>\n arr<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> obj2 <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token operator">...</span>obj1 <span class="token punctuation">}</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1 <span class="token operator">===</span> obj2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">
1// false</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1<span class="token punctuation">.</span>arr <span class="token operator">===</span> obj2<span class="token punctuation">.</span>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// true</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>è¾åº <code>false</code> 就说æå
éæåäºï¼ä½æ¯éé¢çæ°ç»å´å
é失败äºï¼æ¯å 为æ©å±è¿ç®ç¬¦å¨å¤å¶å¼ç¨ç±»åæ¶ï¼å¤å¶çæ¯å°åã</p><p>è¿ç§æ¯è¾è¯éåç®åçå个æ°ç»æè
对象使ç¨ï¼ç®ååæ¹ä¾¿</p><h2 id="æ·±æ·è´" tabindex="-1"><a class="header-anchor" href="#æ·±æ·è´" aria-hidden="true">#</a> æ·±æ·è´</h2><h3 id="json-stringify" tabindex="-1"><a class="header-anchor" href="#json-stringify" aria-hidden="true">#</a> JSON.stringify()</h3><p>å¦æè¦æ·è´ç对象ä¸å
å«å¯¹è±¡ï¼å°±éè¦æ·±æ·è´äºï¼ä¸è¬ä½¿ç¨åççæ¹æ³<code>JSON.parse(JSON.stringify(obj))</code></p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">let</span> obj1 <span class="token operator">=</span> <span class="token punctuation">{</span>\n value<span class="token operator">:</span> <span class="token string">"a"</span><span class="token punctuation">,</span>\n obj<span class="token operator">:</span> <span class="token punctuation">{</span>\n value<span class="token operator">:</span> <span class="token string">"b"</span><span class="token punctuation">,</span>\n <span class="token punctuation">}</span><span class="token punctuation">,</span>\n arr<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> obj2 <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span><span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>obj1<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1<span class="token punctuation">.</span>arr <span class="token operator">===</span> obj2<span class="token punctuation">.</span>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// false</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>obj1<span class="token punctuation">.</span>obj <span class="token operator">===</span> obj2<span class="token punctuation">.</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// false</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p>è¾åº <code>false</code> 就说æå
éæåäº</p><p>è¿ä¸ªä¹ä¼æä¸äºç¼ºé·ï¼æ¯å¦ <code>undefined</code> æè
æå½æ°çæ¶åå°±ä¼åºç°é®é¢ï¼æå¥½çæ¹æ³æ¯ä½¿ç¨éå½å½æ°ã</p>',30),e=(0,p.Uk)("è¿ä¸ªå¯ä»¥åè"),o={href:"https://github.com/lodash/lodash/blob/master/cloneDeep.js",target:"_blank",rel:"noopener noreferrer"},c=(0,p.Uk)("loadsh cloneDeep"),l=(0,p._)("h3",{id:"è§£å³å¾ªç¯å¼ç¨çé®é¢",tabindex:"-1"},[(0,p._)("a",{class:"header-anchor",href:"#è§£å³å¾ªç¯å¼ç¨çé®é¢","aria-hidden":"true"},"#"),(0,p.Uk)(" è§£å³å¾ªç¯å¼ç¨çé®é¢")],-1),u=(0,p._)("p",null,"æç§ç¹æ®æ
åµé注æå°±æ¯å¯¹è±¡åå¨å¾ªç¯å¼ç¨çæ
åµï¼å³å¯¹è±¡ç屿§ç´æ¥çå¼ç¨äºèªèº«çæ
åµï¼è§£å³å¾ªç¯å¼ç¨é®é¢ï¼æä»¬å¯ä»¥é¢å¤å¼è¾ä¸ä¸ªåå¨ç©ºé´ï¼æ¥åå¨å½åå¯¹è±¡åæ·è´å¯¹è±¡ç对åºå
³ç³»ï¼å½éè¦æ·è´å½å对象æ¶ï¼å
å»åå¨ç©ºé´ä¸æ¾ï¼ææ²¡ææ·è´è¿è¿ä¸ªå¯¹è±¡ï¼å¦ææçè¯ç´æ¥è¿åï¼å¦ææ²¡æçè¯ç»§ç»æ·è´ï¼è¿æ ·å°±å·§å¦åè§£ç循ç¯å¼ç¨çé®é¢ã",-1),r=(0,p.Uk)("å
³äºè¿å妿çæï¼è¯·ä»ç»é
读"),i={href:"https://segmentfault.com/a/1190000020255831",target:"_blank",rel:"noopener noreferrer"},k=(0,p.Uk)("ConardLi 大佬å¦ä½ååºä¸ä¸ªæè³é¢è¯å®çæ·±æ·è´?"),b=(0,p.Uk)("è¿ç¯æç« ã"),d=(0,p.uE)('<h3 id="èªå·±å®ç°æ·±æ·è´" tabindex="-1"><a class="header-anchor" href="#èªå·±å®ç°æ·±æ·è´" aria-hidden="true">
1#</a> èªå·±å®ç°æ·±æ·è´</h3><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">function</span> <span class="token function">deepClone</span><span class="token punctuation">(</span>obj<span class="token punctuation">,</span> hash <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">WeakMap</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>obj <span class="token operator">===</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token keyword">return</span> obj<span class="token punctuation">;</span> <span class="token comment">// 妿æ¯nullæè
undefinedæå°±ä¸è¿è¡æ·è´æä½</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>obj <span class="token keyword">instanceof</span> <span class="token class-name">Date</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>obj <span class="token keyword">instanceof</span> <span class="token class-name">RegExp</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">RegExp</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token comment">// å¯è½æ¯å¯¹è±¡æè
æ®éçå¼ å¦ææ¯å½æ°çè¯æ¯ä¸éè¦æ·±æ·è´</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> obj <span class="token operator">!==</span> <span class="token string">"object"</span><span class="token punctuation">)</span> <span class="token keyword">return</span> obj<span class="token punctuation">;</span>\n <span class="token comment">// æ¯å¯¹è±¡çè¯å°±è¦è¿è¡æ·±æ·è´</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>hash<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">return</span> hash<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token keyword">let</span> cloneObj <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">obj<span class="token punctuation">.</span>constructor</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token comment">// æ¾å°çæ¯æå±ç±»ååä¸çconstructor,èååä¸ç constructoræåçæ¯å½åç±»æ¬èº«</span>\n hash<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>obj<span class="token punctuation">,</span> cloneObj<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> key <span class="token keyword">in</span> obj<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span><span class="token function">hasOwnProperty</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
1\n <span class="token comment">// å®ç°ä¸ä¸ªé彿·è´</span>\n cloneObj<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">deepClone</span><span class="token punctuation">(</span>obj<span class="token punctuation">[</span>key<span class="token punctuation">]</span><span class="token punctuation">,</span> hash<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token punctuation">}</span>\n <span class="token punctuation">}</span>\n <span class="token keyword">return</span> cloneObj<span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n<span class="token keyword">let</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span> name<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> address<span class="token operator">:</span> <span class="token punctuation">{</span> x<span class="token operator">:</span> <span class="token number">100</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>\nobj<span class="token punctuation">.</span>o <span class="token operator">=</span> obj<span class="token punctuation">;</span> <span class="token comment">// 对象åå¨å¾ªç¯å¼ç¨çæ
åµ</span>\n<span class="token keyword">let</span> d <span class="token operator">=</span> <span class="token function">deepClone</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span>\nobj<span class="token punctuation">.</span>address<span class="token punctuation">.</span>x <span class="token operator">=</span> <span class="token number">200</span><span class="token punctuation">;</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>d <span class="token operator">===</span> obj<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// false å
éæå</span>\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>d<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// { name: 1, address: { x: 100 }, o: [Circular] }</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br></div></div><h2 id="使ç¨å¾ªç¯" tabindex="-1"><a class="header-anchor" href="#使ç¨å¾ªç¯" aria-hidden="true">#</a> 使ç¨å¾ªç¯</h2><p>éå½å®¹æçæ ã</p><p>å
¶å®ç ´è§£éå½çæ çæ¹æ³æä¸¤æ¡è·¯ï¼ç¬¬ä¸ç§æ¯æ¶é¤å°¾éå½ï¼ä½å¨è¿ä¸ªä¾åä¸è²ä¼¼è¡ä¸éï¼ç¬¬äºç§æ¹æ³å°±æ¯å¹²èä¸ç¨éå½ï¼æ¹ç¨å¾ªç¯ï¼</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code><span class="token keyword">function</span> <span class="token function">cloneLoop</span><span class="token punctuation">(</span><span class="token parameter">x</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">const</span> root <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>\n\n <span class="token comment">// æ </span>\n <span class="token keyword">const</span> loopList <span class="token operator">=</span> <span class="token punctuation">[</span>
1\n <span class="token punctuation">{</span>\n parent<span class="token operator">:</span> root<span class="token punctuation">,</span>\n key<span class="token operator">:</span> <span class="token keyword">undefined</span><span class="token punctuation">,</span>\n data<span class="token operator">:</span> x<span class="token punctuation">,</span>\n <span class="token punctuation">}</span>\n <span class="token punctuation">]</span><span class="token punctuation">;</span>\n\n <span class="token keyword">while</span><span class="token punctuation">(</span>loopList<span class="token punctuation">.</span>length<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token comment">// 深度ä¼å
</span>\n <span class="token keyword">const</span> node <span class="token operator">=</span> loopList<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token keyword">const</span> <span class="token punctuation">{</span>parent<span class="token punctuation">,</span> key<span class="token punctuation">,</span> data<span class="token punctuation">}</span> <span class="token operator">=</span> node<span class="token punctuation">;</span>\n <span class="token comment">// åå§åèµå¼ç®æ ï¼key为undefinedåæ·è´å°ç¶å
ç´ ï¼å¦åæ·è´å°åå
ç´ </span>\n <span class="token keyword">let</span> res <span class="token operator">=</span> parent<span class="token punctuation">;</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> key <span class="token operator">!==</span> <span class="token string">'undefined'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n parent<span class="token punctuation">[</span>key<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>\n res <span class="token operator">=</span> parent<span class="token punctuation">[</span>key<span class="token punctuation">]</span><span class="token punctuation">;</span>\n <span class="token punctuation">}</span>\n\n <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">let</span> k <span class="token keyword">in</span> data<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">.</span><span class="token function">hasOwnProperty</span><span class="token punctuation">(</span>k<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> data<span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">===</span> <span class="token string">'object'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token comment">// ä¸ä¸æ¬¡å¾ªç¯</span>\n loopList<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>\n parent<span class="token operator">:</span> res<span class="token punctuation">,</span>\n key<span class="token operator">:</span> k<span class="token punctuation">,</span>\n data<span class="token operator">:</span> data<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">,</span>
1\n <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>\n res<span class="token punctuation">[</span>k<span class="token punctuation">]</span> <span class="token operator">=</span> data<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">;</span>\n <span class="token punctuation">}</span>\n <span class="token punctuation">}</span>\n <span class="token punctuation">}</span>\n <span class="token punctuation">}</span>\n\n <span class="token keyword">return</span> root<span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br></div></div><p>ç¨å¾ªç¯éå䏿£µæ ï¼éè¦åå©ä¸ä¸ªæ ï¼å½æ 为空æ¶å°±éåå®äºï¼æ éé¢åå¨ä¸ä¸ä¸ªéè¦æ·è´çèç¹</p><p>é¦å
æä»¬å¾æ éæ¾å
¥ç§åæ°æ®ï¼keyç¨æ¥å卿¾åªä¸ä¸ªç¶å
ç´ çé£ä¸ä¸ªåå
ç´ æ·è´å¯¹è±¡</p><p>ç¶åéåå½åèç¹ä¸çåå
ç´ ï¼å¦ææ¯å¯¹è±¡å°±æ¾å°æ éï¼å¦åç´æ¥æ·è´</p><div class="language-javascript ext-js line-numbers-mode"><pre class="language-javascript"><code>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br></div></div><p>æ¹ç¨å¾ªç¯åï¼åä¹ä¸ä¼åºç°çæ çé®é¢äºï¼ä½æ¯å¯¹äºå¾ªç¯å¼ç¨ä¾ç¶æ ååºå¯¹</p><h2 id="åè" tabindex="-1"><a class="header-anchor" href="#åè" aria-hidden="true">#</a> åè</h2>',12),m={href:"https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign",target:"_blank",rel:"noopener noreferrer"},h=(0,p.Uk)("MDN-Object.assign"),j={href:"https://es6.ruanyifeng.com/#docs/array#%E6%89%A9%E5%B1%95%E8%BF%90%E7%AE%97%E7%AC%A6",target:"_blank",rel:"noopener noreferrer"},g=(0,p.Uk)("ES6-æ©å±è¿ç®ç¬¦"),f={href:"https://juejin.im/post/6844904197595332622#heading-13",target:"_blank",rel:"noopener noreferrer"},y=(0,p.Uk)("juejin-æµ
æ·è´ä¸æ·±æ·è´"),v={href:"https://segmentfault.com/a/1190000020255831",target:"_blank",rel:"noopener noreferrer"},w=(0,p.Uk)("å¦ä½ååºä¸ä¸ªæè³é¢è¯å®çæ·±æ·è´?"),x={render:function(n,s){const a=(0,p.up)("OutboundLink");return(0,p.wg)(),(0,p.iD)(p.HY,null,[t,(0,p._)("p",null,[e,(0,p._)("a",o,[c,(0,p.Wm)(a)])]),l,u,(0,p._)("p",null,[r,(0,p._)("a",i,[k,(0,p.Wm)(a)]),b]),d,(0,p._)("ul",null,[(0,p._)("li",null,[(0,p._)("a",m,[h,(0,p.Wm)(a)])]),(0,p._)("li",null,[(0,p._)("a",j,[g,(0,p.Wm)(a)])]),(0,p._)("li",null,[(0,p._)("a",f,[y,(0,p.Wm)(a)])]),(0,p._)("li",null,[(0,p._)("a",v,[w,(0,p.Wm)(a)])])])],64)}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.