摘要:手寫取的顯示原型取的隱式原型這里重點當嚴格等于時,返回深拷貝數組降維返回函數聲明和函數表達式這是一個表達式,表達式忽略名字的函數形參和實參表示函數形參的個數形參和實參映射關系兩個都存在才映射執行順序語法分析預編譯發生在函數執行的前一刻函數聲
1 手寫instanceof
function _instanceof(A, B) { var O = B.prototype;// 取B的顯示原型 A = A.__proto__;// 取A的隱式原型 while (true) { //Object.prototype.__proto__ === null if (A === null) return false; if (O === A)// 這里重點:當 O 嚴格等于 A 時,返回 true return true; A = A.__proto__; } }2 深拷貝
function deepClone(data) { if(typeof data === "object" && data !== null){ var type = data.constructor; var result = new type(); for (var key in data) { if (data.hasOwnProperty(key)) { result[key] = deepClone(data[key]); } } return result; } return data; }3 數組降維
var arr = [1, 2, [3]]; var res = Array.prototype.concat.apply([], arr); console.log(res); var arr2 = [1]; console.log(111); console.log(arr2.concat(11)); // es6 let flatten = arr => arr.reduce((begin,current)=>{ Array.isArray(current)? begin.push(...flatten(current)): begin.push(current); return begin },[])4 tofixed返回string
let aa = 10937843.44; console.log(typeof aa.toFixed(3));5 函數聲明和函數表達式
let test = function aa(){} // 這是一個表達式,表達式忽略名字的 let test1 = function(){} console.log(test) console.log(test.name) // aa console.log(test1.name) //test1 console.log(aa)6 函數形參和實參
function tmp(a,b){ console.log(tmp.length) // 2 表示函數形參的個數 } tmp(1) function sum(a,b,c){ a = 11; console.log(arguments[0]) // 形參和實參映射關系(兩個都存在才映射) c = 2; console.log(arguments[2]) // undefined } sum(1,2)7 js 執行順序
1 語法分析
2 預編譯 發生在函數執行的前一刻
函數聲明整體提升,變量只是聲明提升
預編譯的過程(主要是讀變量聲明)
// 1. 創建AO對象(Active Object) // 2. 查找函數形參及函數內變量聲明,形參名及變量名作為AO對象的屬性,值為undefined // 3. 實參形參相統一,實參值賦給形參 // 4. 查找函數聲明,函數名作為AO對象的屬性,值為函數引用 全局的就是GO 就是window function test(){ console.log(b) if(a){ var b = 10; // 不要管if ,預編譯看到聲明就處理 } }
3 解釋執行
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101039.html
摘要:模塊化是隨著前端技術的發展,前端代碼爆炸式增長后,工程化所采取的必然措施。目前模塊化的思想分為和。特別指出,事件不等同于異步,回調也不等同于異步。將會討論安全的類型檢測惰性載入函數凍結對象定時器等話題。 Vue.js 前后端同構方案之準備篇——代碼優化 目前 Vue.js 的火爆不亞于當初的 React,本人對寫代碼有潔癖,代碼也是藝術。此篇是準備篇,工欲善其事,必先利其器。我們先在代...
摘要:深入理解引擎的執行機制最近在反省,很多知識都是只會用,不理解底層的知識。在閱讀之前,請先記住兩點是單線程語言的是的執行機制。所以,是存在異步執行的,比如單線程是怎么實現異步的場景描述通過事件循環,所以說,理解了機制,也就理解了的執行機制啦。 深入理解js引擎的執行機制 最近在反省,很多知識都是只會用,不理解底層的知識。所以在開發過程中遇到一些奇怪的比較難解決的bug,在思考的時候就會收...
摘要:的翻譯文檔由的維護很多人說,阮老師已經有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...
閱讀 1074·2021-11-19 09:40
閱讀 2214·2021-11-15 18:00
閱讀 1267·2021-10-18 13:34
閱讀 2248·2021-09-02 15:40
閱讀 1533·2019-08-30 14:01
閱讀 1113·2019-08-30 11:11
閱讀 2482·2019-08-29 15:26
閱讀 722·2019-08-29 14:15