var name='jay' var pe={ name:'kang', getname:function () { console.log(this); return this.name } }; console.log(pe.getname()); var pe1=pe.getname; console.log(pe1()) 輸出兩個console.log() // kang //jay
最簡潔的es6 set方法es6
var arr=[2,2,2,3,3,4,5,6,4]; var set=new Set(arr);//轉換爲set 去重; arr=Array.from(set);//轉換回數組; console.log(arr);//實現數組去重;
var arr = [1,2,3,4,5,6,7] function ranArr(arr) { return arr.sort(function() { return Math.random() > 0.5 ? 1 : -1 }) } console.log(ranArr(arr))
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入 SYN_SENT
狀態,等待服務器確認。面試
SYN:同步序列編號。數組
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入 SYN_RECV
狀態;服務器
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED
(TCP鏈接成功)狀態,完成三次握手。網絡
完成三次握手,客戶端與服務器開始傳送數據,在上述過程當中,還有一些重要的概念:閉包
應用層——表示層——會話層——傳輸層——網絡層——數據鏈路層——物理層dom
var str = "abcdefgssdd"; var obj = {}; var letter; for(var i = 0,len = str.length;i<len;i++){//遍歷全部的str letter = str[i]; if(!obj[letter]){//若是爲obj[letter]沒有值就爲false obj[letter]=1;//把obj[letter]的值賦上個1 }else{ //若是obj[letter]的值有值 obj[letter]++;//就把值++ } } var max_key,max_num=0;// for(key in obj){//遍歷對象裏面的全部key if(max_num <obj[key]){//如0<obj[key], max_num = obj[key];//obj[key]爲數字 max_key = key;//key爲字符 } } document.write("字母:"+max_key+" 次數:"+max_num);
本題主要考察閉包的用法,是在面試中常被問的題目,不難可是比較容易上當的題目。tcp
方法一:this
var box=document.getElementsByTagname('div'); for(var i=0;i<box.length;i++){ box[i].index=i+1//由於i是從0開始的; box[i].onclick=function(){ alert(this.index); } }
方法二:code
var box=document.getElementsByTagname('div'); for(var i=0;i<box.length;i++){ (function(i){ box[i].onclick=function(){ alert(i+'1') } }(i) }
asdjhklzxc
截取’asd’(1)abcdefghi.substring(6)
(2)asdjhklzxc.substring(0,3)
考察 substring
的用法。
(1)asd.split('').reverse.().join('')
(2)var arr=[a,b,c]
var last=arr.shift()//被刪除的第一個元素 console.log(arr)//刪除後的數組
var arr = [1,2,1,3,2,3,5,6,5,5] ; var newArr = []; for(var i = 0; i < arr.length; i++) { if(newArr.indexOf(arr[i]) == -1) {//若是找到不到就把arr[i]放到新數組newArr裏 newArr.push(arr[i]); } } console.log(newArr)