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

資訊專欄INFORMATION COLUMN

JS前端面試總結(jié)

ThinkSNS / 3345人閱讀

摘要:春招季如何橫掃面試核心考點(diǎn)基礎(chǔ)版前端面試之路二基礎(chǔ)整理的繼承和的繼承有什么區(qū)別的繼承時(shí)通過(guò)或構(gòu)造函數(shù)機(jī)制來(lái)實(shí)現(xiàn)。作用創(chuàng)建私有變量,減少全局變量,防止變量名污染。異步瀏覽器訪問(wèn)服務(wù)器請(qǐng)求,用戶正常操作,瀏覽器后端進(jìn)行請(qǐng)求。

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

ES5的繼承和ES6的繼承有什么區(qū)別

ES5的繼承時(shí)通過(guò)prototype或構(gòu)造函數(shù)機(jī)制來(lái)實(shí)現(xiàn)。ES5的繼承實(shí)質(zhì)上是先創(chuàng)建子類的實(shí)例對(duì)象,然后再將父類的方法添加到this上(Parent.apply(this))。
ES6的繼承機(jī)制完全不同,實(shí)質(zhì)上是先創(chuàng)建父類的實(shí)例對(duì)象this(所以必須先調(diào)用父類的super()方法),然后再用子類的構(gòu)造函數(shù)修改this。
具體的:ES6通過(guò)class關(guān)鍵字定義類,里面有構(gòu)造方法,類之間通過(guò)extends關(guān)鍵字實(shí)現(xiàn)繼承。子類必須在constructor方法中調(diào)用super方法,否則新建實(shí)例報(bào)錯(cuò)。因?yàn)樽宇悰](méi)有自己的this對(duì)象,而是繼承了父類的this對(duì)象,然后對(duì)其進(jìn)行加工。如果不調(diào)用super方法,子類得不到this對(duì)象。
ps:super關(guān)鍵字指代父類的實(shí)例,即父類的this對(duì)象。在子類構(gòu)造函數(shù)中,調(diào)用super后,才可使用this關(guān)鍵字,否則報(bào)錯(cuò)。

如何實(shí)現(xiàn)一個(gè)閉包?閉包的作用有哪些

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

介紹一下 JS 有哪些內(nèi)置對(duì)象

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

new 操作符具體干了什么呢

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

同步和異步的區(qū)別

同步的概念應(yīng)該是來(lái)自于操作系統(tǒng)中關(guān)于同步的概念:不同進(jìn)程為協(xié)同完成某項(xiàng)工作而在先后次序上調(diào)整(通過(guò)阻塞,喚醒等方式)。
同步強(qiáng)調(diào)的是順序性,誰(shuí)先誰(shuí)后;異步則不存在這種順序性。

同步:瀏覽器訪問(wèn)服務(wù)器請(qǐng)求,用戶看得到頁(yè)面刷新,重新發(fā)請(qǐng)求,等請(qǐng)求完,頁(yè)面刷新,新內(nèi)容出現(xiàn),用戶看到新內(nèi)容,進(jìn)行下一步操作。

異步:瀏覽器訪問(wèn)服務(wù)器請(qǐng)求,用戶正常操作,瀏覽器后端進(jìn)行請(qǐng)求。等請(qǐng)求完,頁(yè)面不刷新,新內(nèi)容也會(huì)出現(xiàn),用戶看到新內(nèi)容。

異步解決方式優(yōu)缺點(diǎn) 回調(diào)函數(shù)(callback)

缺點(diǎn):回調(diào)地獄,不能用 try catch 捕獲錯(cuò)誤,不能 return
優(yōu)點(diǎn):解決了同步的問(wèn)題

Promise

Promise就是為了解決callback的問(wèn)題而產(chǎn)生的。
回調(diào)地獄的根本問(wèn)題在于:

缺乏順序性: 回調(diào)地獄導(dǎo)致的調(diào)試?yán)щy,和大腦的思維方式不符
嵌套函數(shù)存在耦合性,一旦有所改動(dòng),就會(huì)牽一發(fā)而動(dòng)全身,即(控制反轉(zhuǎn))
嵌套函數(shù)過(guò)多的多話,很難處理錯(cuò)誤

Promise 實(shí)現(xiàn)了鏈?zhǔn)秸{(diào)用,也就是說(shuō)每次 then 后返回的都是一個(gè)全新 Promise,如果我們?cè)?then 中 return ,return 的結(jié)果會(huì)被 Promise.resolve() 包裝

優(yōu)點(diǎn):解決了回調(diào)地獄的問(wèn)題
缺點(diǎn):無(wú)法取消 Promise ,錯(cuò)誤需要通過(guò)回調(diào)函數(shù)來(lái)捕獲

Generator

特點(diǎn):可以控制函數(shù)的執(zhí)行,可以配合 co 函數(shù)庫(kù)使用

Async/await

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

優(yōu)點(diǎn):代碼清晰,不用像 Promise 寫一大堆 then 鏈,處理了回調(diào)地獄的問(wèn)題
缺點(diǎn):await 將異步代碼改造成同步代碼,如果多個(gè)異步操作沒(méi)有依賴性而使用 await 會(huì)導(dǎo)致性能上的降低。

null 和 undefined 的區(qū)別

null: null表示空值,轉(zhuǎn)為數(shù)值時(shí)為0;
undefined:undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值,但是還沒(méi)有定義。

? 變量被聲明了,但沒(méi)有賦值時(shí),就等于undefined。
? 對(duì)象沒(méi)有賦值的屬性,該屬性的值為undefined。
? 函數(shù)沒(méi)有返回值時(shí),默認(rèn)返回undefined。

JavaScript 原型,原型鏈 ? 有什么特點(diǎn)?

JavaScript 原型: 每創(chuàng)建一個(gè)函數(shù),函數(shù)上都有一個(gè)屬性為 prototype,它的值是一個(gè)對(duì)象。 這個(gè)對(duì)象的作用在于當(dāng)使用函數(shù)創(chuàng)建實(shí)例的時(shí)候,那么這些實(shí)例都會(huì)共享原型上的屬性和方法。

原型鏈: 在 JavaScript 中,每個(gè)對(duì)象都有一個(gè)指向它的原型(prototype)對(duì)象的內(nèi)部鏈接(proto)。這個(gè)原型對(duì)象又有自己的原型,直到某個(gè)對(duì)象的原型為 null 為止(也就是不再有原型指向)。這種一級(jí)一級(jí)的鏈結(jié)構(gòu)就稱為原型鏈(prototype chain)。 當(dāng)查找一個(gè)對(duì)象的屬性時(shí),JavaScript 會(huì)向上遍歷原型鏈,直到找到給定名稱的屬性為止;到查找到達(dá)原型鏈的頂部(Object.prototype),仍然沒(méi)有找到指定的屬性,就會(huì)返回 undefined

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

JavaScript 由以下三部分組成:

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

前端工程化就是用做工程的思維看待和開發(fā)自己的項(xiàng)目,
而模塊化和組件化是為工程化思想下相對(duì)較具體的開發(fā)方式,因此可以簡(jiǎn)單的認(rèn)為模塊化和組件化是工程化的表現(xiàn)形式。
模塊化和組件化一個(gè)最直接的好處就是復(fù)用,同時(shí)我們也應(yīng)該有一個(gè)理念,模塊化和組件化除了復(fù)用之外還有就是分治,我們能夠在不影響其他代碼的情況下按需修改某一獨(dú)立的模塊或是組件,因此很多地方我們及時(shí)沒(méi)有很強(qiáng)烈的復(fù)用需要也可以根據(jù)分治需求進(jìn)行模塊化或組件化開發(fā)。
模塊化開發(fā)的4點(diǎn)好處:

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

前端模塊化實(shí)現(xiàn)的過(guò)程如下:
一 函數(shù)封裝
我們?cè)谥v到函數(shù)邏輯的時(shí)候提到過(guò),函數(shù)一個(gè)功能就是實(shí)現(xiàn)特定邏輯的一組語(yǔ)句打包,在一個(gè)文件里面編寫幾個(gè)相關(guān)函數(shù)就是最開始的模塊了

  function m1(){
    //...
  }

  function m2(){
    //...
  }

這樣做的缺點(diǎn)很明顯,污染了全局變量,并且不能保證和其他模塊起沖突,模塊成員看起來(lái)似乎沒(méi)啥關(guān)系
二 對(duì)象
為了解決這個(gè)問(wèn)題,有了新方法,將所有模塊成員封裝在一個(gè)對(duì)象中

var module = new Object({

  _count:0,

  m1:function (){  ```  },

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

這樣 兩個(gè)函數(shù)就被包在這個(gè)對(duì)象中, 嘿嘿 看起來(lái)沒(méi)毛病是嗎 繼續(xù)往下:
當(dāng)我們要使用的時(shí)候,就是調(diào)用這個(gè)對(duì)象的屬性
module.m1()
誒嘿 那么問(wèn)題來(lái)了 這樣寫法會(huì)暴露全部的成員,內(nèi)部狀態(tài)可以被外部改變,比如外部代碼可直接改變計(jì)數(shù)器的值
//壞人的操作

module._count = 10;

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

var module = (function (){

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

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

    return{
         m1:m1,
         m2:m2
    }

})()    

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

面向?qū)ο笈c面向過(guò)程

什么是面向過(guò)程與面向?qū)ο螅?/p>

? 面向過(guò)程就是做圍墻的時(shí)候,由你本身操作,疊第一層的時(shí)候:放磚頭,糊水泥,放磚頭,糊水泥;然后第二層的時(shí)候,繼續(xù)放磚頭,糊水泥,放磚頭,糊水泥……
? 面向?qū)ο缶褪亲鰢鷫Φ臅r(shí)候,由他人幫你完成,將做第一層的做法抽取出來(lái),就是放磚頭是第一個(gè)動(dòng)作,糊水泥是第二個(gè)動(dòng)作,然后給這兩個(gè)動(dòng)作加上步數(shù),最后告訴機(jī)器人有 n 層,交給機(jī)器人幫你工作就行了。

為什么需要面向?qū)ο髮懛ǎ?/p>

? 更方便
? 可以復(fù)用,減少代碼冗余度
? 高內(nèi)聚低耦合
簡(jiǎn)單來(lái)說(shuō),就是增加代碼的可復(fù)用性,減少咱們的工作,使代碼更加流暢。

事件綁定和普通事件有什么區(qū)別

普通添加事件的方法:

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

執(zhí)行上面的代碼只會(huì)alert 2

事件綁定方式添加事件:

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

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

垃圾回收

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

2、引用計(jì)數(shù)
  另一種不太常見(jiàn)的垃圾回收策略是引用計(jì)數(shù)。引用計(jì)數(shù)的含義是跟蹤記錄每個(gè)值被引用的次數(shù)。當(dāng)聲明了一個(gè)變量并將一個(gè)引用類型賦值給該變量時(shí),則這個(gè)值的引用次數(shù)就是1。相反,如果包含對(duì)這個(gè)值引用的變量又取得了另外一個(gè)值,則這個(gè)值的引用次數(shù)就減1。當(dāng)這個(gè)引用次數(shù)變成0時(shí),則說(shuō)明沒(méi)有辦法再訪問(wèn)這個(gè)值了,因而就可以將其所占的內(nèi)存空間給收回來(lái)。這樣,垃圾收集器下次再運(yùn)行時(shí),它就會(huì)釋放那些引用次數(shù)為0的值所占的內(nèi)存。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101480.html

相關(guān)文章

  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0
  • 前端開發(fā)面試題鏈接

    摘要:手冊(cè)網(wǎng)超級(jí)有用的前端基礎(chǔ)技術(shù)面試問(wèn)題收集前端面試題目及答案匯總史上最全前端面試題含答案常見(jiàn)前端面試題及答案經(jīng)典面試題及答案精選總結(jié)前端面試過(guò)程中最容易出現(xiàn)的問(wèn)題前端面試題整理騰訊前端面試經(jīng)驗(yàn)前端基礎(chǔ)面試題部分最新前端面試題攻略前端面試前端入 手冊(cè)網(wǎng):http://www.shouce.ren/post/index 超級(jí)有用的前端基礎(chǔ)技術(shù)面試問(wèn)題收集:http://www.codec...

    h9911 評(píng)論0 收藏0
  • 前端開發(fā)面試題鏈接

    摘要:手冊(cè)網(wǎng)超級(jí)有用的前端基礎(chǔ)技術(shù)面試問(wèn)題收集前端面試題目及答案匯總史上最全前端面試題含答案常見(jiàn)前端面試題及答案經(jīng)典面試題及答案精選總結(jié)前端面試過(guò)程中最容易出現(xiàn)的問(wèn)題前端面試題整理騰訊前端面試經(jīng)驗(yàn)前端基礎(chǔ)面試題部分最新前端面試題攻略前端面試前端入 手冊(cè)網(wǎng):http://www.shouce.ren/post/index 超級(jí)有用的前端基礎(chǔ)技術(shù)面試問(wèn)題收集:http://www.codec...

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

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 深入理解js

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

    caikeal 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<