日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端技能拾遗

發布時間:2023/11/29 HTML 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端技能拾遗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是對自己前端知識遺漏點的總結和歸納,希望對大家有用,會持續更新的~

解釋語言和編譯型語言

解釋型語言與編譯型語言的區別翻譯時間的不同。 編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以后執行這個程序的時候,就不用再進行翻譯了。 解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對于編譯型語言要慢。 C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。而JS是與編譯型語言類似,一樣要經過,詞法分析,語法分析,AST生成三個步驟。

模塊

詳細解釋請參考參考

commonJS

  • CommonJS 模塊中,如果你 require 了一個模塊,那就相當于你執行了該文件的代碼并最終獲取到模塊輸出的module.exports 對象的一份拷貝。
  • CommonJS 模塊中 require 引入模塊的位置不同會對輸出結果產生影響,并且會生成值的拷貝
  • CommonJS 模塊重復引入的模塊并不會重復執行,再次獲取模塊只會獲得之前獲取到的模塊的拷貝
  • ES6 輸出值的引用

  • ES6 模塊中就不再是生成輸出對象的拷貝,而是動態關聯模塊中的值。
  • import 命令會被 JavaScript 引擎靜態分析,優先于模塊內的其他內容執行。
  • export 命令會有變量聲明提前的效果。
  • 空對象

    Object.create(null)的結果和{}很像,但是它不會創建Object.prototype這個委托,所以它要比{}更空。 復制代碼

    null和undefined的區別

    null表示真正的“無”,代表一個空對象指針,即變量未指向任何對象。 Undefined 表示缺省值,即此處應該有一個值但是還沒有定義。 在轉換為數值類型時,而知區別很大

    Number(undefined) // NaN5 + undefined // NaNNumber(null) // 0 復制代碼

    理解js中的構造函數

    function MyFunction() {} var obj1 = new MyFunction() var obj2 = new MyFunction() 復制代碼

    其實可以將上面的代碼等價為

    funtion MyFunction(){} var obj1 = {} MyFunction.call(obj1) 復制代碼

    js內部先用new操作符創建一個對象,緊接著就將函數的this綁定到這個對象上來執行這個函數。

    硬綁定bind

    參考 不同: bind 是返回對應函數,便于稍后調用;apply 、call 則是立即調用 。

    實現

    Function.prototype.bind2 = function (context) {if (typeof this !== "function") {throw new Error("Function.prototype.bind - what is trying to be bound is not callable");}var self = this;var args = Array.prototype.slice.call(arguments, 1);var fNOP = function () {};var fBound = function () {var bindArgs = Array.prototype.slice.call(arguments);return self.apply(this instanceof fNOP ? this : context, args.concat(bindArgs));}fNOP.prototype = this.prototype;fBound.prototype = new fNOP();return fBound; } 復制代碼

    箭頭函數

    function foo() {return (a) => {console.log( this.a ); }; } var obj1 = { a:2 }; var obj2 = { a:3 }; var bar = foo.call( obj1 ); bar.call( obj2 ); // 2, 不是 3 ! 復制代碼

    foo() 內部創建的箭頭函數會捕獲調用時 foo() 的 this。由于 foo() 的 this 綁定到 obj1, bar(引用箭頭函數)的 this 也會綁定到 obj1,箭頭函數的綁定無法被修改。(new 也不 行!)

    安全

    xss(跨站腳本攻擊)

    其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。 詳細內容可參考這里

    csrf(跨站請求偽造)

    macrotask和microtask

    請參考

    HTTP

    keep-alive

    請參考

    為什么要進行三次握手

    詳細內容請參考

    AJAX

    React

    react-router實現原理

    請參考 請參考2

    總結

    以上是生活随笔為你收集整理的前端技能拾遗的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。