有学有练才叫学习:学而不思则罔,思而不学则殆:学而不习,纸上谈兵,习而不进,画地为牢!

vue 对象赋值(把一个对象赋值给另外一个对象)两个对象值同步了

vue 炮渣日记 2周前 (11-22) 16次浏览 已收录 0个评论 扫描二维码
<code class="prism language-javascript has-numbering"> <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
  <span class="token keyword">return</span><span class="token punctuation">{</span>
      tmp1<span class="token punctuation">:</span><span class="token punctuation">{</span>
          t<span class="token punctuation">:</span><span class="token number">1</span>
      <span class="token punctuation">}</span><span class="token punctuation">,</span>
      tmp2<span class="token punctuation">:</span><span class="token punctuation">{</span>
          t<span class="token punctuation">:</span><span class="token string">''</span>
      <span class="token punctuation">}</span>
  <span class="token punctuation">}</span>  
<span class="token punctuation">}</span><span class="token punctuation">,</span></code><code>
</code>

将tmp1的内容赋值给tmp2,改变tmp2里对象的值,发现tmp1里的值也跟着变化了。

为什么会出现这种情况呢?

其实,这是一个引用传递而不是值传递,tmp1和tmp2指向的是同一个内存地址。

如果我们不想让temp1的值跟着联动变化,应该怎么做呢?直接看代码

this.temp2= JSON.parse(JSON.stringify(this.temp1));

this.temp2.t = 'ssss';

console.log( this.temp1.t);//打印结果:1

console.log( this.temp2.t);//打印结果:ssss
喜欢 (0)
炮渣日记
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址