人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

Javascript淺拷貝與深拷貝完成

Javascript淺拷貝與深拷貝完成

更新時間:2020-12-07 文章作者:未知 信息來源:網絡 閱讀次數:


Javascript中的對像賦值與Java中是一樣的,都為引用傳遞.就是說,在把一個對像賦值給一個變量時,那么這個變量所指向的仍就是原來對像的地址.那怎么來做呢 答案是克隆.

     什么是"clone"?

     在實際編程過程中,我們常常要遇到這種情況:有一個對象A,在某一時刻A中已經包含了一些有效值,此時可能會需要一個和A完全相同新對象B,并且此后對B任何改動都不會影響到A中的值,也就是說,A與B是兩個獨立的對象,但B的初始值是由A對象確定的。在Java/javasript語言中,用簡單的賦值語句是不能滿足這種需求的。要滿足這種需求雖然有很多途徑,但實現clone()方法是其中最簡單,也是最高效的手段,當然了 javascript語言中并沒有此方法.

     所以我特意寫了兩個克隆方法:一個為淺復制 ,一個為深復制.解釋:
     淺復制(影子克隆):只復制對象的基本類型,對象類型,仍屬于原來的引用.
     深復制(深度克隆):不緊復制對象的基本類,同時也復制原對象中的對象.就是說完全是新對象產生的.

下面是測試代碼:
運行代碼框
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><META NAME="Generator" CONTENT="Wawa Editor 1.0"><META NAME="Author" CONTENT="八神奄"><META NAME="Keywords" CONTENT="Javascript,Java,XML,XSLT,ASP,VBScript,ASP .net,C#,C++,Database"><META NAME="Description" CONTENT="不及格的程序員,無所不在"></HEAD><BODY><SCRIPT LANGUAGE="JavaScript"><!--function Object.prototype.clone(){var newObj = new Object();for(elements in this){newObj[elements] = this[elements];}return newObj;}function Object.prototype.cloneAll(){function clonePrototype(){}clonePrototype.prototype = this;var obj = new clonePrototype();for(var ele in obj){if(typeof(obj[ele])=="object") obj[ele] = obj[ele].cloneAll();}return obj;}var obj1= new Object();obj1.Team= "First";obj1.Powers= new Array("Iori","Kyo");obj1.msg= function(){alert()};obj1.winner= new Object();obj1.winner.name= obj1.Powers[0];obj1.winner.age= 23;obj1.winner.from= "Japan"var obj1_clone= obj1.cloneAll();obj1_clone.Team= "Second";obj1_clone.Powers= new Array("Jimmy","Anndy");obj1_clone.winner.name= obj1_clone.Powers[1];obj1_clone.winner.age= 22;obj1_clone.winner.from= "USA";msg = "2003界拳皇單打獨斗杯,拳皇挑戰賽: \n\n A組 對戰形式:\n\n"msg += obj1.Team+" 組 ,人員名單:"+obj1.Powers+"\n";msg += "第一輪過后,勝利者為:"+obj1.winner.name +" ,參賽者年齡:"+obj1.winner.age+" ,來自島國: "+obj1.winner.from+"\n";msg += "\n\n B組 對戰形式:\n\n"msg += obj1_clone.Team+" 組 ,人員名單:"+obj1_clone.Powers+"\n";msg += "第一輪過后,勝利者為:"+obj1_clone.winner.name +" ,參賽者年齡:"+obj1_clone.winner.age+" ,來自國際警察部隊: "+obj1_clone.winner.from+"\n";alert(msg);//--></SCRIPT></BODY></HTML>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行](出處:藍色理想)

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 会理县| 岐山县| 施甸县| 青海省| 高平市| 祥云县| 泸水县| 邓州市| 神池县| 河北区| 耒阳市| 祁连县| 江安县| 镇平县| 平阳县| 城市| 怀安县| 成武县| 新营市| 四会市| 深州市| 尉氏县| 嘉鱼县| 莱州市| 阳原县| 大同市| 富蕴县| 左云县| 全南县| 长治市| 铜川市| 莒南县| 来宾市| 黑河市| 肇庆市| 舞钢市| 开封县| 东至县| 体育| 吐鲁番市| 安顺市|