摘要:類型請求成功后的回調函數。參數由服務器返回,并根據參數進行處理后的數據描述狀態的字符串。默認設置下,所有請求均為異步請求。類型發送請求前可修改對象的函數,如添加自定義頭。對象是唯一的參數。如果返回可以取消本次請求。設置為將不緩存此頁面。
題目一 : 統計字符串中出現次數最多的字符
eg : var s = "abcdefghijklabcdaaaefadca" ; // 其中a出現次數最多,7次
拿到這個題目,會怎么做呢?
首先我想到兩種思路:
暴力查找,一個一個元素拿出來,再循環,得到次數放入json鍵值對中,再比較大小
找到一個刪除一個,利用正則表達式替換,長度之差便是其重復的次數
暴力查找:
var s = "abcdefghijklabcdaaaefadca"; var json = {}; var Max = { key:"", value:0 }; var arr = s.split(""); for(var i=0;iMax.value){ Max.key = prop; Max.value = json[prop] } } console.log(Max); //得出正確結果
正則法:
var s = "abcdefghijklabcdaaaefadca"; //用于存放各字母出現的次數 var json = {}; //用于存放出現次數為最大值的字母 var Max = { key:"", value:0 }; //正則替換,長度之差就是出現的次數 while(s){ var len1 , len2; len1 = s.length; var first = s.charAt(0); s = s.replace(new RegExp(first,"g"),""); len2 = s.length; json[first] = len1-len2; } //找最大值 for(prop in json){ if(json[prop] > Max.value){ Max.key = prop; Max.value = json[prop] } } console.log(Max); //得出答案
這個題目還有一個好方法:
var s = "abcdefghijklabcdaaaefadca"; var json = {}; var Max = { key:"", value:0 }; for(var i=0;iMax.value){ Max.key = prop; Max.value = json[prop] } } console.log(Max); //得出答案 這種算法時間復雜度為O(n),可以說是很簡單了!
題目二 : 求下面的輸出值
function Show(){ getName = function(){ console.log(1); } return this; }; Show.getName = function(){ console.log(2); }; Show.prototype.getName = function(){ console.log(3); }; var getName = function(){ console.log("4"); } function getName(){ console.log(5); }; 求這些問題的解: 1、Show.getName(); 2、getName(); 3、Show().getName(); 4、getName(); 5、new Show.getName(); 6、new Show().getName(); 7、new new Show().getName();
這道題目考察的是Javascript基礎,
首先要明白JS執行過程:
先提升(先提升函數,再提升變量,如果名字一樣,變量提升會覆蓋函數提升)
再執行,如果遇到閉包創建
在閉包空間中反復1和2
先定義(提升),在執行
變量提升
函數提升
本題目解答如下:
形如 func.method(函數名.屬性),函數也是對象,發現Show.getName()有定義,就執行方法屬性,輸出2
根據JS執行過程,先提升函數getName(),再提升變量getName , 同名覆蓋,就知道變量getName覆蓋了其同名函數,執行變量getName,結果是 “4”
形如 func().method() ,意思是先執行 func() , 由 func() 的返回值執行method方法,所以先要知道 func() 返回值是什么? return this; this指什么呢? 誰調用指向誰,func是全局調用 , 所以this指向window ,Show()函數執行后,里面把getName的定義該變了,所以,window.getName() 輸出是 1
getName() , 在當前環境等同于 window.getName() ,輸出是 1
new Show.getName() 先執行show.getName()輸出2 在new一下
new Show().getName() 使用了new關鍵字,是把函數show當成了構造器,此時return沒有作用,getName在構造器里沒有,找原型對象 輸出 3
new new Show().getName() 就是在第六問基礎之上輸出 3 之后,在new一個
javascript所有的函數都可以使用 new func()關鍵字,表示生成一個對象。這點理解了,理解上面的就簡單
Javascript 簡單概念
javascript的typeof返回哪些數據類型
object , number , function , boolean , undefind , string
檢測數組的幾種方法 , 檢測obj是否是數組類型
Array.isArray(obj);
obj instanceof Array
arr.constructor.name
toString.call()
傳統事件綁定和符合W3C標準的事件綁定有什么區別?
傳統事件綁定:
123
如果說給同一個元素綁定了兩次或者多次相同類型的事件,那么后面的綁定會覆蓋前面的綁定
不支持DOM事件流 事件捕獲階段è目標元素階段=>事件冒泡階段
符合W3C標準的事件綁定的方式 addEventListener/attachEvent
A、非IE瀏覽器:
addEventListener
如果說給同一個元素綁定了兩次或者多次相同類型的事件,所以的綁定將會依次觸發
支持DOM事件流的
進行事件綁定傳參不需要on前綴
addEventListener(“click”,function(){},true);//此時的事件就是在事件捕獲階段執行
第三個參數:代表是否在捕獲階段執行,默認值是false
ddEventListener(“click”,function(e){})
addEventListener(“click”,function(){},false) 事件在冒泡階段執行
B、IE瀏覽器
ie9開始,ie11 edge:addEventListener
ie9以前 ie8:attachEvent/detachEvent
進行事件類型傳參需要帶上on前綴
dom1.attachEvent(“onclick”,functioin(){});
這種方式只支持事件冒泡,不支持事件捕獲
call和apply的區別
call和apply相同點:
都是為了用一個本不屬于一個對象的方法,讓這個對象去執行
toString.call([],1,2,3)
toString.apply([],[1,2,3])
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
區別:
call第二個參數開始接受一個參數列表
apply第二個參數開始接受一個參數數組
jQuery框架中$.ajax()的常用參數有哪些?
type
類型:String
默認值: "GET")。請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
url
類型:String
默認值: 當前頁地址。發送請求的地址。
success
類型:Function 請求成功后的回調函數。
參數:由服務器返回,并根據 dataType 參數進行處理后的數據;描述狀態的字符串。
這是一個 Ajax 事件。
options
類型:Object
可選。AJAX 請求設置。所有選項都是可選的。
async
類型:Boolean
默認值: true。默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。
注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。
beforeSend(XHR)
類型:Function
發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。
XMLHttpRequest 對象是唯一的參數。
這是一個 Ajax 事件。如果返回 false 可以取消本次 ajax 請求
。
cache
類型:Boolean
默認值: true,dataType 為 script 和 jsonp 時默認為 false。設置為 false 將不緩存此頁面。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83070.html
摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...
摘要:每天會折騰一道及以上題目,并將其解題思路記錄成文章,發布到和微信公眾號上。三匯總返回目錄在月日月日這半個月中,做了匯總了數組知識點。或者拉到本文最下面,添加的微信等會根據題解以及留言內容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。 LeetCode 匯總 - 2019/08/15 Create by jsliang on 2019-08-12 19:39:34 Recently...
摘要:方法一因為是從開始的方法二獲取怎么實現和截取考察的用法。翻轉字符串和刪除數組的第一元素將字符串轉化為數組。將數組進行翻轉。將數組轉換為字符串。被刪除的第一個元素刪除后的數組數組去重如果找到不到就把放到新數組里 1.運算題的結果 var name=jay var pe={ name:kang, getname:function () { ...
閱讀 604·2021-11-18 13:12
閱讀 1321·2021-11-15 11:39
閱讀 2480·2021-09-23 11:22
閱讀 6212·2021-09-22 15:15
閱讀 3665·2021-09-02 09:54
閱讀 2318·2019-08-30 11:10
閱讀 3250·2019-08-29 14:13
閱讀 2918·2019-08-29 12:49