文件第二部分_第1頁
文件第二部分_第2頁
文件第二部分_第3頁
文件第二部分_第4頁
文件第二部分_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二部1.1.1.要描述JavaScript據類第二部1.1.1.要描述JavaScript據類JavaScript的數據類型可以分為原始類型和對象類型原始類型包括string、number和boolean三種。其中,字符串是使用一對單引號小數;布爾(邏輯)只能有兩個值:true或false。復雜類型指其他對象,如Array、Date、Objectundefined(未定義1.2.讀代碼,寫結寫出下列表達式的計算結果上述代碼的結果分別為1.3.要描述null和undefined111vara=[];varb=a;b[0]=1;undefinedundefined素不存在;如果函數沒有任何返回值,也返回undefined。2vara=varobj={x:1,y:{z:2}varn=[obj,3,[4,5]];console.log(a<<2);deleten[0]; //轉換為字符 //轉換為字 //無法轉換為數值進行計算,因此返回NaN1[objectOjbect] //返回對象的toString()結果,按照字符串相加 //null轉換為數值10+"7"*1-1+true+2+上述代碼的輸出結果分別為上述代上述代碼的輸出結果分別為上述代碼運x、yz值為多上述代碼運行后,變x值11;變y值20z10這是因為,運行第三行代碼時,只執行?后的第一個語句,因此,y值不發生變化,1.7.對于“&&”運算符,當第一個操作數為false時,將不會判斷第二個操作數,因為時無論第二個操作數為何,最后的運算結果一定是論第二個操作數為何,最后的運算結果一定是true。1.8.上述代碼運行后,將產生有效輸出,還是代碼錯誤3varempAge=20;varempName;if(empAge>20&&empName.length>{}else}varx=10;vary=varz=x<y?x++:8225console.log(n[0].x);此行代碼錯誤,無法輸出有效信息,會輸出 信上述代碼運行,會輸出2,這是因為,if條件中的邏輯表達式的第一個條件(empAge>20)不滿足,會返回empNameempName.length將發生錯誤;但是,因為發既然if條件中的邏輯表達式返回false,則運行else上述代碼運行,會輸出2,這是因為,if條件中的邏輯表達式的第一個條件(empAge>20)不滿足,會返回empNameempName.length將發生錯誤;但是,因為發既然if條件中的邏輯表達式返回false,則運行else語句:輸出21.9.JavaScriptJavaScript需要注意的是,在函數體內聲明局部變量時,如果不使用var上述代碼的輸出結果為local。這是因為,在函數test()體內,局部變量的優先級高優先。因此,調用函數test()時,返回的是局部變量x,其值為local。什么是JavaScriptJavaScript中的函數作用域是指:變量在聲明它的函數體以及這個函數體嵌套的任意4varx="global";functiontest(){varx="local";returnx;}比如,查看如下代碼上述代碼運行,將先輸出undefined,比如,查看如下代碼上述代碼運行,將先輸出undefined,再輸出10這是因為,雖然變量x在第二行聲明并賦值,但其有效范圍為整個函數體,因此,第一行代碼輸出時,表示變量x已經聲明但是沒有賦值,因此輸出undefined;第三行代碼運行時,因為變量x已經賦值為10,則輸出10。讀代碼,寫結寫出下列代碼的輸出結果上述代碼中,輸出sum的值為45;輸出i的值為10這是因為,在函數test()體內,循環計算完畢后,變量sum的值為從0累加到10,此,循環完畢后,變量i的值為10。讀代碼,寫結寫出下列代碼的輸出結果5varx="global";functiontest()varx="local";}function{varsum=for(vari=0;i<10;{sum+=}}functionvarx=10;}上述代碼中,先輸出undefined,再輸出local函數test()體內聲明了與全局變量同名的局部變量x,則將覆蓋全局變量,即局部變量優先。因此,第一次輸出變量x時,為輸出局部變量x,此時變量x只有聲明而沒有賦值,因此輸出undefined;第二次輸出變量x時,局部變量x已經賦值,因此輸出字符串簡述arguments在函數代碼中,使用特殊對象arguments可以訪問函數的參數。即,開發者在定義函數時,無需明確的為方法聲明參數,也可以在方法體中使用arguments來訪問參數。這是因為,arguments是一種特殊對象,在函數代碼中,表示函數的參數數組。正因為argumentsarguments.length檢上述代碼中,先輸出undefined,再輸出local函數test()體內聲明了與全局變量同名的局部變量x,則將覆蓋全局變量,即局部變量優先。因此,第一次輸出變量x時,為輸出局部變量x,此時變量x只有聲明而沒有賦值,因此輸出undefined;第二次輸出變量x時,局部變量x已經賦值,因此輸出字符串簡述arguments在函數代碼中,使用特殊對象arguments可以訪問函數的參數。即,開發者在定義函數時,無需明確的為方法聲明參數,也可以在方法體中使用arguments來訪問參數。這是因為,arguments是一種特殊對象,在函數代碼中,表示函數的參數數組。正因為argumentsarguments.length檢簡要描述JavaScript1、函數語句:即使用function3、使用Function6varf=function(x){returnx*x;Varf=newFunction(“x”,”returnvarf=function(x){returnfunctionreturn}上述代碼運行時,先輸functionx)上述代碼運行時,先輸functionx)returnx*x;再輸出100這是因為,變量f表一個函數對象,因此直接輸出變量時,將輸出函數體對應的字符文本;f(10)表示調用變量f所對應的函數,返回100并輸出。閱讀如下代上述代碼運行后,輸出結果為functionf(){然后輸出function;再輸出hello;然后會輸出異常信息:stringisnotafunction。這是因為,定義函數時,函數名稱作為一個全局變量,該變量指向函數對象。因此,行函數test中的第一行代碼時,將輸出變量f所對應的函數對象,即輸出函數體中代碼的字符串形式;然后執行f()表示調用方法f,則輸出字符串“function”;執行代碼Hello列舉幾個JavaScript中常用的全局函數,并描述其作參考答JavaScript中常用的全局函數及其作用如下1.parseInt:解析一個字符串并返回一個整數7function{}functionf="hello";}isNaN:檢查某個值是否是數字,返回true或者encodeURI:把字符串作為URI進行編碼;decodeURI:對encodeURI()函數編碼過的URIeval:計算某個字符串,以得到結果,或者用于執行其中的isNaN:檢查某個值是否是數字,返回true或者encodeURI:把字符串作為URI進行編碼;decodeURI:對encodeURI()函數編碼過的URIeval:計算某個字符串,以得到結果,或者用于執行其中的上述代碼運行,會在頁面輸出 使用JavaScript測試函數bubbleSort8vararr=[12,4,9,21,43,functionbubbleSort(arr)for(vari=0;i<arr.length;i++)for(varj=0;j<arr.length-i-1;{if(arr[j]>arr[j+1]){vartemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}function{for(variinarr)if(arr[i]instanceof{}elsedocument.write(arr[i]+'}}}vardata=[1,[20,21],[[301,302],[310,上述代碼運行時,將輸出排序后上述代碼運行時,將輸出排序后的結果:[3,49122143]編寫函數,實現插入排插入排序是指,先假定n元素的數列分為已有序和無序兩個部分;然后將無序數JavaScript寫的插入排序函數如下所示測試函數insertionSort,代碼如9vararr=[12,4,9,21,43,functioninsertionSort(arr)//從第二個元素開for(vari=1;i<arr.length;i++)//取出待比較的元vark=//向前找,找到比當前元素大的位varfor(j=i-1;j>=0&&k<arr[j];j--)//向后移動一arr[j+1]=}插入元arr[j+1]=}}上述代碼運行時,將輸出排序后的結果:[349122143]上述代碼運行時,將輸出排序后的結果:[349122143]2、將這17是2,就會在身份證的第18位數字上出現羅馬數字的Ⅹ。如果余數是10,身份證的最后一位號碼就是2驗證其最后一位是否正確時,171891891117+2/11,也就22x。所以,可以判定此verifyCode(id){if(id.length!=18)return將這17位數字和系數相乘的結果相加 vararr=varsum=for(vari=0;i<arr.length;sum+=parseInt(id.charAt(i))*}varc=sum%11;//3、分別對應的最后一位身份證的varch=['1','0','X','9','8','7','6','5','4','3',varcode=varlast=id.charAt(17);last=last=='x'?'X':last;returnlast==code;測試該方法讀代碼,寫結寫出下測試該方法讀代碼,寫結寫出下列代碼的輸出結果上述代碼的輸出結[40,50pop()表代碼中,第一次入棧為數字30;第二次入棧為數組[40,50],且該數組排在棧頂。因此,調用方法pop()時,將刪除并返回棧頂元素[40,50],這是一個數組,因此輸出結果為[40,50]。什么是棧?在JavaScript中,如何模擬棧操作vararr1=[10,20];arr1.push([40,50]);vardata=arr1.pop();varid=在JavaScriptpush素,即頂部入;然后使用數組的pop()刪除并返回數組尾部的元素,類似于頂部出棧,即上述代碼的輸出結果為[20,30在JavaScriptpush素,即頂部入;然后使用數組的pop()刪除并返回數組尾部的元素,類似于頂部出棧,即上述代碼的輸出結果為[20,304050數組的方法push()表示入棧,即在棧頂(數組尾端)添加指定的元素,因此,數字50shift()(數組頭部)的元素,因正則表達式(RegularExpressionvararr1=[10,20,30,在1、結合String對象的replace、searchmatch法,實現對字符串的替換、查2、定義正則表達式對象,實現對字符串的復雜匹配操作讀代碼,寫結寫出下列代碼的輸出結果上述代碼的輸出結果為3String的search(regexp)法,用于返回第一次出現匹配指定正則表達式的下標,試題中,正則表達式\bdo\b表示匹配完整的單詞do,且不區分大小寫。而變中,第一次出現單詞do(不區分大小寫)16閱讀如下代上述代碼運行后,輸出結果為上述代碼運行,會先輸catchblock;再輸出finallyblockfunction{trynum=Number(num);if(isNaN(num)){thrownewError('Argumentsis}console.log('tryblock}catch{console.log('catchblock');return;}finallyconsole.log('finally}console.log('function}varregexp=vardata='HedoestoldtoDo,do.';10xnumbercatch“catchb10xnumbercatch“catchbloc簡要描述JavaScript簡要描述JavaScriptJavaScript在JavaScripta,a,如果有就使用;如果沒有就查找作用域鏈中x,則認為這段代碼的作用域鏈上不存在x,將拋出引用錯誤異常。(function(num1,{console.log(num1+num2){console.log(num1+num2);閱讀如下代上述代碼運行后,閱讀如下代上述代碼運行后,輸出結果為上述代碼運行,會輸出200上述代碼意味著,先執行f(),得到該函數內嵌套的一個函數對象g,然后調用這個嵌定義函數f時,它保存一個作用域鏈,作用域鏈上有兩個對象,一個是函數對象,一個是全局對象,此時,全局變量a是全局對象的屬性,和函數對象f無關。執行函數f,會創建一個活動對象,其中保存變量a作為函數f的屬性而存在。而g套定義在函f,對其訪問變a它沒有變a,則繼續往下查找函數f。找到函數f的屬性a并返回。因此,輸出結果為200。這種函數將變量包裹起來,外部代碼可以通過內嵌函數g來訪問函數f內的局部變量簡要描述你對閉包的理閉包有如下應用特征;2、內嵌函數:在函數中聲明有內嵌函數,內嵌函數對函數中的局部變量進行訪問閱讀如下代vara=100;functionf(){vara=200;functiong(){return}return}上述代碼運行后,分別輸出數字1、2、3counter,則得到一個計數器,即代碼中的變量c1,用于統計被調用的次數;每運行一次計數器c1,則訪問次數加1。因此分別輸出數字1、2、3。其次從代碼原理來分析:函數counter返回其內嵌函數g,該函數中包裹了函數counter的局部變量上述代碼運行后,分別輸出數字1、2、3counter,則得到一個計數器,即代碼中的變量c1,用于統計被調用的次數;每運行一次計數器c1,則訪問次數加1。因此分別輸出數字1、2、3。其次從代碼原理來分析:函數counter返回其內嵌函數g,該函數中包裹了函數counter的局部變量n,其初始值為0;每次運行函數g,均訪問相應的局部變量n,從為3。i3;當3salert(i)時,訪問的是循環中的變量i。因此,三次彈出均為數值3。如果希望實現分別彈出數字0、1、2,for(vari=0;i<3;{(function(n)setTimeout(function(){alert(n);},}for(vari=0;i<3;i++)setTimeout(function(){alert(i);},}varn=10;{varn=varg=function()returnreturn}varc1=counter();量i值作為參數傳入。每次循環中,調用一次匿名函數,則啟動一個定時器對象,將相應的數字傳入。3s后執行函數時,不再訪問循環中的局部變量i,則會依次彈出0、1、2。簡述JavaScript創建自定義對象的方自定義對象(user-definedobject)指由用戶創建的對象,兼容性問題需要由編寫者1、對象直2、new3、function象模板查看如下JavaScript代碼為使上段代碼正確運行,請定義對象UserJavaScript中,this關鍵字的作用是什么this指向全局對象籠統的說,關鍵字this向當前對象。比如,頂級代碼中的指定元素事件的時候,this指定當前發生事件的元素對象。對于嵌套函數,如果嵌套函數作為方法被調this向調用它的對象;如果作為函數調用,this是全局對象或者為undefined(嚴格模式下。function{=roduce=function{alert("iam"+varp=newUser("mary"); //mary //彈出iam查看如下JavaScript代碼:上述代碼在瀏覽器中運行后,第一行的輸出結果類似于:Objectm:function},表示thisWindowthis查看如下JavaScript代碼:上述代碼在瀏覽器中運行后,第一行的輸出結果類似于:Objectm:function},表示thisWindowthisomthis對象;然后運行嵌套函數f時,this指向全局對象,在瀏覽器中運行時,全局對象為Window對象。需要注意的是,如果使用嚴格模式,則第二行會輸出undefined。查看如下JavaScript代碼:20foo的bar()this向調用它的對象,即foo,因此,輸出該對象中所定義的屬性值。a10簡述你對JavaScriptvara=10;varfoo=a:bar:function(){vara=30;returnthis.a}console.log((foo.bar=foo.bar)());varo=m:functionfunction{}}JavaScript,函數本身就是一個包含了方法和屬性JavaScript,函數本身就是一個包含了方法和屬性的對象。每個函數中都有一個prototype屬性,該屬性所存儲的就是原型對象。原型對象用來保存共享屬性和方法,可以通過原型來實現為對象擴展屬性,實現繼承查看如下JavaScript代碼上述代碼運行后,輸出結果是原型對象中包含著當前函數所有實例共享的方法和屬性使用函數的prototype性可以向函數的原型對象添加或刪除屬性和方法,并且這些可以使用delete關鍵字刪除對象的屬性,包括自有屬性和原型屬性簡要描述JavaScript中的自有屬性和原型屬Etotype.dept研發部emp1.job=functionEmp(ename,{this.ename=ename;this.salary=salary;this.toString=function(){returnthis.ename+":"+}varemp1=newEmp("mary",3500);varemp2=newEmp("john",Etotype.hireDate="2015/05/01";deleteemp1.ename;deleteEtotype.hireDate;console.log(emp1.toString()+":"+emp1.hireDate);console.log(emp2.toString()+":"+查看如下JavaScript代碼:輸出結果分別為true、true、true、falsetruename,查看如下JavaScript代碼:輸出結果分別為true、true、true、falsetruename,heroname。因此在對hero用innamename出true;使用hasOwnProperty()進行判斷也是輸出true。使用函數的prototype向函數的原型添加屬性時,添加的屬性age為原型屬性。因使用in操作符判斷時,先判斷是否為自有屬性,如果沒有,則在原型鏈中查找屬性age,因此第一行輸出true;但是age并非自有屬性,所以第二行輸出false。否有自有屬性age時,將輸出true。hero.age=console.log('age'inhero);function{=}Htotype.age=20;varhero=newHero();console.log('name'inhero);console.log('age'inhero);hero.age=30;prototype屬性指向某個prototype屬性指向某個對象,由此形成了一條鏈,稱之為原型鏈。可以使用isPrototypeOf()方法判定一個prototype對象是否存在于另一個對象的原鏈中。如果是,返回true,否則返回false中在JavaScript中,繼承都是源于原型,有多種實現方式。比如修改構造函數的原型,為該構造函數創建的對象指定統一的父級對象。代碼如下只繼承于原型(盡可能地將可重用的屬性和方法添加到原型中代碼如下單獨修改一個對象的原型,而不影響其他對象的原型。代碼如下修改構造函數,這將影響使用該構造函數創建的所有對象。代碼如下查看如下JavaScript代碼上述代碼運行后,輸出結果是function{=}H=varhero=newHero();delete;deletefunction{Object.setPrototypeOf(this,newvarb1=newB();Object.setPrototypeOf(b1,newA());B.prototype=B.prototype=new該屬性的值從構造函數中繼承而來,即為“unknown“;刪除hero的自有屬性后,再試“Caesar刪除hero的原型屬性后,則輸出“und該屬性的值從構造函數中繼承而來,即為“unknown“;刪除hero的自有屬性后,再試“Caesar刪除hero的原型屬性后,則輸出“undefined查看如下JavaScript代碼:Bb1然使用默認的從Object繼承而來的toString()方法,因此輸出對象的類型和名稱。對象b2是在修改了BA中所定義的toString()方bCall和applycall function{=this.toString=function(){}function{=}varb1=newB();B.prototype=new數為可選參數,表示將被傳遞方法參數序列數為可選參數,表示將被傳遞方法參數序列不同的是第二個參數。對于apply(),第二個參數是一個參數數組,也就是將多個參數組合查看如下JavaScript代碼上述代碼運行后,輸出結果是上述代碼運行后,輸出Mynameisb。代碼roduce.call(b1);示對于對象b1調用a1的introduce(查看如下JavaScript代碼上述代碼運行后,輸出結果是上述代碼運行后,先彈出顯示undefined,再彈出顯示2第一行代碼運行后,變量a和b都指向對象{n:1},第二行代碼運行,先為對象{n:1}{n:1,x:{n:2}并將變量a指向這個新對象,而變量b依然指向原有對象。因此,a.x將輸出undefined,因為此時新對象中只有屬n有屬x;b.x.n表示向原有對象的中的新屬性,因此輸出2。vara=b={n:1a.x=a={n:2};function{=roduce=function(){console.log("Mynameis"+)}function{=}vara1=new2.2.1.innerHTML、nodeValue與textContentinnerHTML屬性讀取或設置節點起始和結束標簽中的HTML內容;textContent2.2.1.innerHTML、nodeValue與textContentinnerHTML屬性讀取或設置節點起始和結束標簽中的HTML內容;textContent1、通過HTMLgetElementById()方法:根據元素的idgetElementsByName()方法:根據元素name2、通過CSSquerySelector('selector')和querySelectorAll('selector')方法:根據CSS選擇器3、通過document對象選取,如document.all、document.body2.4.為html頁面上的一個按鈕添加onclick事件處理,有幾種方法1接HTML代碼中2.4.為html頁面上的一個按鈕添加onclick事件處理,有幾種方法1接HTML代碼中添加其中,funcA()為一個有效函數2js代碼中添加,如或其中,btn表示按鈕對3、定義監聽函數,代碼如2.5.window對象除以外的一些常用子對象,并描述其作用window對象有很多子對象,除document以外,還有如下常用子對象history對象:此對象包含用戶(在瀏覽器窗口中)訪問過的locationURL息,常用于獲取和改變當前event象:任何事件觸發后將會產生一個event象,該對象記錄事件發2.6.查看如下代碼btn.addEventListener('click',function(){btn.onclick=btn.onclick=<inputtype=”button”onclick=”funcA();”,,target=P單擊段落中的文本“ClickMeP>元素的onclick事件,且觸發事件的元,,target=P單擊段落中的文本“ClickMeP>元素的onclick事件,且觸發事件的元事件,再彈出“clickDIV,target=Pbutton1for(vari=1;i<6;i++)varinput= (空白處 }varid=setInterval(function(){alert("HelloJavaScript");},1000)<scripttype="text/javascript"language="javascript">functionclickP(e){vartarget=e.target||e.srcElement;alert("clickP,target="+target.nodeName);}functionclickDIV(e)vartarget=e.target||e.srcElement;alert("clickDIV,target="+target.nodeName);}<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論