jquery的extend()用法

html代码:

<!DOCTYPE html>
<html>
<head>
    <title>extend</title>
</head>
<body>

</body>
</html>
<script src='../jquery-3.1.1.js'></script>
<script type="text/javascript">
'use strict'
    var dest={ name: "John", location: {city: "Boston",county:"USA"} };
    var src= { last: "Resig", location: {state: "MA",county:"China"} };

    var result1=$.extend(true, {}, dest,src );
    console.log(result1);

    console.log('dest是:')
    console.log(dest)
    
    console.log('dest.last是:')
    console.log(dest.last)//undefined
    console.log('.........');

    var result2=$.extend({}, dest,src ,src1);
    console.log(result2);
    console.log(dest);
    console.log('.........');


    var result3=$.extend(true,dest,src );
    console.log(result3);
    console.log(dest);
</script>

clipboard.png

clipboard.png

请大神指点,谢谢~~~

阅读 2k
1 个回答

因为desc这个对象在内存里的地址没变。。。

当console第一次desc的时候显示的是当时的desc的对象的字符串形式的表达,后面result2和result3的时候篡改了desc对象,但这个时候,浏览器并不会更新之前打印出来的对象的字符串形式的表达。直到你展开,浏览器刷新成json形式表达,同时,这时候的对象信息也是最新的

不知道我这么描述,你看明白没

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题