国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS前端面試總結

ThinkSNS / 3338人閱讀

摘要:春招季如何橫掃面試核心考點基礎版前端面試之路二基礎整理的繼承和的繼承有什么區別的繼承時通過或構造函數機制來實現。作用創建私有變量,減少全局變量,防止變量名污染。異步瀏覽器訪問服務器請求,用戶正常操作,瀏覽器后端進行請求。

春招季如何橫掃 Javascript 面試核心考點(基礎版)?
前端面試之路二(javaScript基礎整理)

ES5的繼承和ES6的繼承有什么區別

ES5的繼承時通過prototype或構造函數機制來實現。ES5的繼承實質上是先創建子類的實例對象,然后再將父類的方法添加到this上(Parent.apply(this))。
ES6的繼承機制完全不同,實質上是先創建父類的實例對象this(所以必須先調用父類的super()方法),然后再用子類的構造函數修改this。
具體的:ES6通過class關鍵字定義類,里面有構造方法,類之間通過extends關鍵字實現繼承。子類必須在constructor方法中調用super方法,否則新建實例報錯。因為子類沒有自己的this對象,而是繼承了父類的this對象,然后對其進行加工。如果不調用super方法,子類得不到this對象。
ps:super關鍵字指代父類的實例,即父類的this對象。在子類構造函數中,調用super后,才可使用this關鍵字,否則報錯。

如何實現一個閉包?閉包的作用有哪些

在一個函數里面嵌套另一個函數,被嵌套的那個函數的作用域是一個閉包。
作用:創建私有變量,減少全局變量,防止變量名污染。可以操作外部作用域的變量,變量不會被瀏覽器回收,保存變量的值。

介紹一下 JS 有哪些內置對象

Object 是 JavaScript 中所有對象的父對象
數據封裝類對象:Object、Array、Boolean、Number、String
其他對象:Function、Argument、Math、Date、RegExp、Error

new 操作符具體干了什么呢

(1)創建一個空對象,并且 this 變量引用該對象,同時還繼承了該函數的原型。
(2)屬性和方法被加入到 this 引用的對象中。
(3)新創建的對象由 this 所引用,并且最后隱式的返回 this 。

同步和異步的區別

同步的概念應該是來自于操作系統中關于同步的概念:不同進程為協同完成某項工作而在先后次序上調整(通過阻塞,喚醒等方式)。
同步強調的是順序性,誰先誰后;異步則不存在這種順序性。

同步:瀏覽器訪問服務器請求,用戶看得到頁面刷新,重新發請求,等請求完,頁面刷新,新內容出現,用戶看到新內容,進行下一步操作。

異步:瀏覽器訪問服務器請求,用戶正常操作,瀏覽器后端進行請求。等請求完,頁面不刷新,新內容也會出現,用戶看到新內容。

異步解決方式優缺點 回調函數(callback)

缺點:回調地獄,不能用 try catch 捕獲錯誤,不能 return
優點:解決了同步的問題

Promise

Promise就是為了解決callback的問題而產生的。
回調地獄的根本問題在于:

缺乏順序性: 回調地獄導致的調試困難,和大腦的思維方式不符
嵌套函數存在耦合性,一旦有所改動,就會牽一發而動全身,即(控制反轉)
嵌套函數過多的多話,很難處理錯誤

Promise 實現了鏈式調用,也就是說每次 then 后返回的都是一個全新 Promise,如果我們在 then 中 return ,return 的結果會被 Promise.resolve() 包裝

優點:解決了回調地獄的問題
缺點:無法取消 Promise ,錯誤需要通過回調函數來捕獲

Generator

特點:可以控制函數的執行,可以配合 co 函數庫使用

Async/await

async、await 是異步的終極解決方案

優點:代碼清晰,不用像 Promise 寫一大堆 then 鏈,處理了回調地獄的問題
缺點:await 將異步代碼改造成同步代碼,如果多個異步操作沒有依賴性而使用 await 會導致性能上的降低。

null 和 undefined 的區別

null: null表示空值,轉為數值時為0;
undefined:undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。

? 變量被聲明了,但沒有賦值時,就等于undefined。
? 對象沒有賦值的屬性,該屬性的值為undefined。
? 函數沒有返回值時,默認返回undefined。

JavaScript 原型,原型鏈 ? 有什么特點?

JavaScript 原型: 每創建一個函數,函數上都有一個屬性為 prototype,它的值是一個對象。 這個對象的作用在于當使用函數創建實例的時候,那么這些實例都會共享原型上的屬性和方法。

原型鏈: 在 JavaScript 中,每個對象都有一個指向它的原型(prototype)對象的內部鏈接(proto)。這個原型對象又有自己的原型,直到某個對象的原型為 null 為止(也就是不再有原型指向)。這種一級一級的鏈結構就稱為原型鏈(prototype chain)。 當查找一個對象的屬性時,JavaScript 會向上遍歷原型鏈,直到找到給定名稱的屬性為止;到查找到達原型鏈的頂部(Object.prototype),仍然沒有找到指定的屬性,就會返回 undefined

如何獲取一個大于等于0且小于等于9的隨機整數
 function randomNum(){
     return Math.floor(Math.random()*10)
 }
想要去除一個字符串的第一個字符,有哪些方法可以實現
 str.slice(1)
 str.substr(1)
 str.substring(1)
 str.replace(/./,"")
 str.replace(str.charAt(0),"")
JavaScript的組成

JavaScript 由以下三部分組成:

ECMAScript(核心):JavaScript 語言基礎
DOM(文檔對象模型):規定了訪問HTML和XML的接口
BOM(瀏覽器對象模型):提供了瀏覽器窗口之間進行交互的對象和方法
到底什么是前端工程化、模塊化、組件化

前端工程化就是用做工程的思維看待和開發自己的項目,
而模塊化和組件化是為工程化思想下相對較具體的開發方式,因此可以簡單的認為模塊化和組件化是工程化的表現形式。
模塊化和組件化一個最直接的好處就是復用,同時我們也應該有一個理念,模塊化和組件化除了復用之外還有就是分治,我們能夠在不影響其他代碼的情況下按需修改某一獨立的模塊或是組件,因此很多地方我們及時沒有很強烈的復用需要也可以根據分治需求進行模塊化或組件化開發。
模塊化開發的4點好處:

  1 避免變量污染,命名沖突
  2  提高代碼復用率
  3 提高維護性
    4 依賴關系的管理

前端模塊化實現的過程如下:
一 函數封裝
我們在講到函數邏輯的時候提到過,函數一個功能就是實現特定邏輯的一組語句打包,在一個文件里面編寫幾個相關函數就是最開始的模塊了

  function m1(){
    //...
  }

  function m2(){
    //...
  }

這樣做的缺點很明顯,污染了全局變量,并且不能保證和其他模塊起沖突,模塊成員看起來似乎沒啥關系
二 對象
為了解決這個問題,有了新方法,將所有模塊成員封裝在一個對象中

var module = new Object({

  _count:0,

  m1:function (){  ```  },

  m2:function (){   ```  }                
 
})    

這樣 兩個函數就被包在這個對象中, 嘿嘿 看起來沒毛病是嗎 繼續往下:
當我們要使用的時候,就是調用這個對象的屬性
module.m1()
誒嘿 那么問題來了 這樣寫法會暴露全部的成員,內部狀態可以被外部改變,比如外部代碼可直接改變計數器的值
//壞人的操作

module._count = 10;

最后的最后,聰明的人類找到了究極新的方法——立即執行函數,這樣就可以達到不暴露私有成員的目的

var module = (function (){

    var _count = 5;
     
    var m1 = function (){  ```   };

    var m2 = function (){  ```   };

    return{
         m1:m1,
         m2:m2
    }

})()    

參考鏈接: http://www.cnblogs.com/ihardc...

面向對象與面向過程

什么是面向過程與面向對象?

? 面向過程就是做圍墻的時候,由你本身操作,疊第一層的時候:放磚頭,糊水泥,放磚頭,糊水泥;然后第二層的時候,繼續放磚頭,糊水泥,放磚頭,糊水泥……
? 面向對象就是做圍墻的時候,由他人幫你完成,將做第一層的做法抽取出來,就是放磚頭是第一個動作,糊水泥是第二個動作,然后給這兩個動作加上步數,最后告訴機器人有 n 層,交給機器人幫你工作就行了。

為什么需要面向對象寫法?

? 更方便
? 可以復用,減少代碼冗余度
? 高內聚低耦合
簡單來說,就是增加代碼的可復用性,減少咱們的工作,使代碼更加流暢。

事件綁定和普通事件有什么區別

普通添加事件的方法:

var btn = document.getElementById("hello");
btn.onclick = function(){
    alert(1);
}
btn.onclick = function(){
    alert(2);
}

執行上面的代碼只會alert 2

事件綁定方式添加事件:

var btn = document.getElementById("hello");
btn.addEventListener("click",function(){
    alert(1);
},false);
btn.addEventListener("click",function(){
    alert(2);
},false);

執行上面的代碼會先alert 1 再 alert 2
普通添加事件的方法不支持添加多個事件,最下面的事件會覆蓋上面的,而事件綁定(addEventListener)方式添加事件可以添加多個。
addEventListener不兼容低版本IE
普通事件無法取消
addEventLisntener還支持事件冒泡+事件捕獲

垃圾回收

由于字符串、對象和數組沒有固定大小,所有當他們的大小已知時,才能對他們進行動態的存儲分配。JavaScript程序每次創建字符串、數組或對象時,解釋器都必須分配內存來存儲那個實體。只要像這樣動態地分配了內存,最終都要釋放這些內存以便他們能夠被再用,否則,JavaScript的解釋器將會消耗完系統中所有可用的內存,造成系統崩潰。
  現在各大瀏覽器通常用采用的垃圾回收有兩種方法:標記清除、引用計數。
1、標記清除
  這是javascript中最常用的垃圾回收方式。當變量進入執行環境是,就標記這個變量為“進入環境”。從邏輯上講,永遠不能釋放進入環境的變量所占用的內存,因為只要執行流進入相應的環境,就可能會用到他們。當變量離開環境時,則將其標記為“離開環境”。
  垃圾收集器在運行的時候會給存儲在內存中的所有變量都加上標記。然后,它會去掉環境中的變量以及被環境中的變量引用的標記。而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最后。垃圾收集器完成內存清除工作,銷毀那些帶標記的值,并回收他們所占用的內存空間。
關于這一塊,建議讀讀Tom大叔的幾篇文章,關于作用域鏈的一些知識詳解,讀完差不多就知道了,哪些變量會被做標記。

2、引用計數
  另一種不太常見的垃圾回收策略是引用計數。引用計數的含義是跟蹤記錄每個值被引用的次數。當聲明了一個變量并將一個引用類型賦值給該變量時,則這個值的引用次數就是1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數就減1。當這個引用次數變成0時,則說明沒有辦法再訪問這個值了,因而就可以將其所占的內存空間給收回來。這樣,垃圾收集器下次再運行時,它就會釋放那些引用次數為0的值所占的內存。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101480.html

相關文章

  • 前端最強面經匯總

    摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...

    wangjuntytl 評論0 收藏0
  • 前端開發面試題鏈接

    摘要:手冊網超級有用的前端基礎技術面試問題收集前端面試題目及答案匯總史上最全前端面試題含答案常見前端面試題及答案經典面試題及答案精選總結前端面試過程中最容易出現的問題前端面試題整理騰訊前端面試經驗前端基礎面試題部分最新前端面試題攻略前端面試前端入 手冊網:http://www.shouce.ren/post/index 超級有用的前端基礎技術面試問題收集:http://www.codec...

    h9911 評論0 收藏0
  • 前端開發面試題鏈接

    摘要:手冊網超級有用的前端基礎技術面試問題收集前端面試題目及答案匯總史上最全前端面試題含答案常見前端面試題及答案經典面試題及答案精選總結前端面試過程中最容易出現的問題前端面試題整理騰訊前端面試經驗前端基礎面試題部分最新前端面試題攻略前端面試前端入 手冊網:http://www.shouce.ren/post/index 超級有用的前端基礎技術面試問題收集:http://www.codec...

    snifes 評論0 收藏0
  • 前端資源系列(4)-前端學習資源分享&前端面試資源匯總

    摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...

    princekin 評論0 收藏0
  • 深入理解js

    摘要:詳解十大常用設計模式力薦深度好文深入理解大設計模式收集各種疑難雜癥的問題集錦關于,工作和學習過程中遇到過許多問題,也解答過許多別人的問題。介紹了的內存管理。 延遲加載 (Lazyload) 三種實現方式 延遲加載也稱為惰性加載,即在長網頁中延遲加載圖像。用戶滾動到它們之前,視口外的圖像不會加載。本文詳細介紹了三種延遲加載的實現方式。 詳解 Javascript十大常用設計模式 力薦~ ...

    caikeal 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<