js的浅拷贝与深拷贝:
浅拷贝:JS中引用类型使用等号“=” 赋值,相当于把原来对象的地址拷贝一份给新的对象,这样原来旧的对象与新的对象就指向同一个地址,改变其中一个对象就会影响另外那个对象,也就是所谓的浅拷贝。
深拷贝:所谓”深拷贝”,就是能够实现真正意义上的数组和对象的拷贝。它的实现并不难,只要递归调用”浅拷贝”就行了。指向不同的地址。
3.代码示例:http://api.jquery.com/jQuery.extend/#jQuery-extend-target-object1-objectN
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery.extend demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body><div id="log"></div><script>var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97};var object2 = { banana: { price: 200 }, durian: 100};// Merge object2 into object1$.extend( object1, object2 );// Assuming JSON.stringify - not available in IE<8$( "#log" ).append( JSON.stringify( object1 ) );</script></body></html><!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery.extend demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body><div id="log"></div><script>var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97};var object2 = { banana: { price: 200 }, durian: 100};// Merge object2 into object1, recursively$.extend( true, object1, object2 );// Assuming JSON.stringify - not available in IE<8$( "#log" ).append( JSON.stringify( object1 ) );</script></body></html><!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery.extend demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body><div id="log"></div><script>var defaults = { validate: false, limit: 5, name: "foo" };var options = { validate: true, name: "bar" };// Merge defaults and options, without modifying defaultsvar settings = $.extend( {}, defaults, options );// Assuming JSON.stringify - not available in IE<8$( "#log" ).append( "<div><b>defaults -- </b>" + JSON.stringify( defaults ) + "</div>" );$( "#log" ).append( "<div><b>options -- </b>" + JSON.stringify( options ) + "</div>" );$( "#log" ).append( "<div><b>settings -- </b>" + JSON.stringify( settings ) + "</div>" );</script></body></html>3.源码