js基礎(chǔ)相關(guān)面試題

1 介紹JavaScript的基本數(shù)據(jù)類型
Number步清、String 要门、Boolean 虏肾、Null、Undefined
Object 是 JavaScript 中所有對(duì)象的父對(duì)象
數(shù)據(jù)封裝類對(duì)象:Object欢搜、Array封豪、Boolean、Number 和 String
其他對(duì)象:Function炒瘟、Arguments吹埠、Math、Date唧领、RegExp藻雌、Error
新類型:Symbol

2 說說寫JavaScript的基本規(guī)范?

  1. 不要在同一行聲明多個(gè)變量
  2. 使用 ===或!==來比較true/false或者數(shù)值
  3. switch必須帶有default分支
  4. 函數(shù)應(yīng)該有返回值
  5. for if else 必須使用大括號(hào)
  6. 語句結(jié)束加分號(hào)
  7. 命名要有意義斩个,使用駝峰命名法

3 jQuery使用建議

  1. 盡量減少對(duì)dom元素的訪問和操作
  2. 盡量避免給dom元素綁定多個(gè)相同類型的事件處理函數(shù)胯杭,可以將多個(gè)相同類型事件
    處理函數(shù)合并到一個(gè)處理函數(shù),通過數(shù)據(jù)狀態(tài)來處理分支
  3. 盡量避免使用toggle事件

4 Ajax使用
全稱 : Asynchronous Javascript And XML
所謂異步受啥,就是向服務(wù)器發(fā)送請(qǐng)求的時(shí)候做个,我們不必等待結(jié)果,而是可以同時(shí)做其他的事情滚局,等到有了結(jié)果它自己會(huì)根據(jù)設(shè)定進(jìn)行后續(xù)操作居暖,與此同時(shí),頁面是不會(huì)發(fā)生整頁刷新的藤肢,提高了用戶體驗(yàn)太闺。
創(chuàng)建Ajax的過程:

  1. 創(chuàng)建XMLHttpRequest對(duì)象(異步調(diào)用對(duì)象)
var xhr = new XMLHttpRequest();

  1. 創(chuàng)建新的Http請(qǐng)求(方法、URL嘁圈、是否異步)
xhr.open(‘get’,’example.php’,false);

  1. 設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)省骂。
    onreadystatechange事件中readyState屬性等于4。響應(yīng)的HTTP狀態(tài)為200(OK)或者304(Not Modified)最住。
  2. 發(fā)送http請(qǐng)求
xhr.send(data);

  1. 獲取異步調(diào)用返回的數(shù)據(jù)
    注意:
  2. 頁面初次加載時(shí)钞澳,盡量在web服務(wù)器一次性輸出所有相關(guān)的數(shù)據(jù),只在頁面加載完成之后涨缚,用戶進(jìn)行操作時(shí)采用ajax進(jìn)行交互轧粟。
  3. 同步ajax在IE上會(huì)產(chǎn)生頁面假死的問題。所以建議采用異步ajax脓魏。
  4. 盡量減少ajax請(qǐng)求次數(shù)
  5. ajax安全問題兰吟,對(duì)于敏感數(shù)據(jù)在服務(wù)器端處理,避免在客戶端處理過濾茂翔。對(duì)于關(guān)鍵業(yè)務(wù)邏輯代碼也必須放在服務(wù)器端處理揽祥。

5 JavaScript有幾種類型的值?你能畫一下他們的內(nèi)存圖嗎檩电?
基本數(shù)據(jù)類型存儲(chǔ)在棧中拄丰,引用數(shù)據(jù)類型(對(duì)象)存儲(chǔ)在堆中府树,指針放在棧中。
兩種類型的區(qū)別是:存儲(chǔ)位置不同料按;原始數(shù)據(jù)類型直接存儲(chǔ)在棧中的簡(jiǎn)單數(shù)據(jù)段奄侠,占據(jù)空間小、大小固定载矿,屬于被頻繁使用數(shù)據(jù)垄潮,所以放入棧中存儲(chǔ);引用數(shù)據(jù)類型存儲(chǔ)在堆中的對(duì)象,占據(jù)空間大闷盔、大小不固定,如果存儲(chǔ)在棧中弯洗,將會(huì)影響程序運(yùn)行的性能
引用數(shù)據(jù)類型在棧中存儲(chǔ)了指針,該指針指向堆中該實(shí)體的起始地址逢勾。當(dāng)解釋器尋找引用值時(shí)牡整,會(huì)首先檢索其在棧中的地址,取得地址后從堆中獲得實(shí)體溺拱。

6 棧和堆的區(qū)別逃贝?
棧(stack):由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值迫摔,局部變量等沐扳;
堆(heap):一般由程序員分配釋放,若程序員不釋放句占,程序結(jié)束時(shí)可能由操作系統(tǒng)釋放沪摄。

7 Javascript實(shí)現(xiàn)繼承的幾種方式
JavaScript實(shí)現(xiàn)類與繼承的方法(全面整理)

8 Javascript創(chuàng)建對(duì)象的幾種方式?
JavaScript實(shí)現(xiàn)類與繼承的方法(全面整理)

9 Javascript作用鏈域
作用域鏈的原理和原型鏈很類似纱烘,如果這個(gè)變量在自己的作用域中沒有杨拐,那么它會(huì)尋找父級(jí)的,直到最頂層凹炸。
注意:JS沒有塊級(jí)作用域,若要形成塊級(jí)作用域昼弟,可通過(function(){})()啤它;立即執(zhí)行的形式實(shí)現(xiàn)。

10 談?wù)則his的理解

  1. this總是指向函數(shù)的直接調(diào)用者(而非間接調(diào)用者)
  2. 如果有new關(guān)鍵字舱痘,this指向new出來的那個(gè)對(duì)象
  3. 在事件中变骡,this指向目標(biāo)元素,特殊的是IE的attachEvent中的this總是指向全局對(duì)象window芭逝。

11 eval是做什么的塌碌?
它的功能是把對(duì)應(yīng)的字符串解析成JS代碼并運(yùn)行;應(yīng)該避免使用eval旬盯,不安全台妆,非常耗性能(2次翎猛,一次解析成js語句,一次執(zhí)行)接剩。

12 什么是window對(duì)象? 什么是document對(duì)象?
window對(duì)象代表瀏覽器中打開的一個(gè)窗口切厘。document對(duì)象代表整個(gè)html文檔。實(shí)際上懊缺,document對(duì)象是window對(duì)象的一個(gè)屬性疫稿。

13 null,undefined的區(qū)別鹃两?
null表示一個(gè)對(duì)象被定義了遗座,但存放了空指針,轉(zhuǎn)換為數(shù)值時(shí)為0俊扳。
undefined表示聲明的變量未初始化途蒋,轉(zhuǎn)換為數(shù)值時(shí)為NAN。
typeof(null) -- object;
typeof(undefined) -- undefined

14 寫一個(gè)通用的事件偵聽器函數(shù)(機(jī)試題)

15 ["1", "2", "3"].map(parseInt) 答案是多少拣度?
[1,NaN,NaN]

解析:
Array.prototype.map()
array.map(callback[, thisArg])
callback函數(shù)的執(zhí)行規(guī)則
參數(shù):自動(dòng)傳入三個(gè)參數(shù)
currentValue(當(dāng)前被傳遞的元素)碎绎;
index(當(dāng)前被傳遞的元素的索引);
array(調(diào)用map方法的數(shù)組)

parseInt方法接收兩個(gè)參數(shù)
第三個(gè)參數(shù)["1", "2", "3"]將被忽略抗果。parseInt方法將會(huì)通過以下方式被調(diào)用
parseInt("1", 0)
parseInt("2", 1)
parseInt("3", 2)

parseInt的第二個(gè)參數(shù)radix為0時(shí)筋帖,ECMAScript5將string作為十進(jìn)制數(shù)字的字符串解析;
parseInt的第二個(gè)參數(shù)radix為1時(shí)冤馏,解析結(jié)果為NaN日麸;
parseInt的第二個(gè)參數(shù)radix在2—36之間時(shí),如果string參數(shù)的第一個(gè)字符(除空白以外)逮光,不屬于radix指定進(jìn)制下的字符代箭,解析結(jié)果為NaN。
parseInt("3", 2)執(zhí)行時(shí)涕刚,由于"3"不屬于二進(jìn)制字符嗡综,解析結(jié)果為NaN。

16 關(guān)于事件杜漠,IE與火狐的事件機(jī)制有什么區(qū)別极景? 如何阻止冒泡?
IE為事件冒泡驾茴,F(xiàn)irefox同時(shí)支持事件捕獲和事件冒泡盼樟。但并非所有瀏覽器都支持事件捕獲。jQuery中使用event.stopPropagation()方法可阻止冒泡;(舊IE的方法 ev.cancelBubble = true;

17 什么是閉包(closure)锈至,為什么要用它晨缴?
閉包指的是一個(gè)函數(shù)可以訪問另一個(gè)函數(shù)作用域中變量。常見的構(gòu)造方法峡捡,是在一個(gè)函數(shù)內(nèi)部定義另外一個(gè)函數(shù)击碗。內(nèi)部函數(shù)可以引用外層的變量筑悴;外層變量不會(huì)被垃圾回收機(jī)制回收。
注意延都,閉包的原理是作用域鏈雷猪,所以閉包訪問的上級(jí)作用域中的變量是個(gè)對(duì)象,其值為其運(yùn)算結(jié)束后的最后一個(gè)值晰房。
優(yōu)點(diǎn):避免全局變量污染求摇。缺點(diǎn):容易造成內(nèi)存泄漏。
例子:

function makeFunc() {
    var name = "Mozilla";
    function displayName() {
        console.log(name); 
    }
    return displayName;
}
var myFunc = makeFunc();
myFunc();   //輸出Mozilla

myFunc 變成一個(gè) 閉包殊者。閉包是一種特殊的對(duì)象与境。它由兩部分構(gòu)成:函數(shù),以及創(chuàng)建該函數(shù)的環(huán)境猖吴。環(huán)境由閉包創(chuàng)建時(shí)在作用域中的任何局部變量組成摔刁。在我們的例子中,myFunc 是一個(gè)閉包海蔽,由 displayName 函數(shù)和閉包創(chuàng)建時(shí)存在的 "Mozilla" 字符串形成共屈。

18 javascript 代碼中的"use strict";是什么意思 ? 使用它區(qū)別是什么?
除了正常模式運(yùn)行外党窜,ECMAscript添加了第二種運(yùn)行模式:“嚴(yán)格模式”拗引。
作用:

  1. 消除js不合理,不嚴(yán)謹(jǐn)?shù)胤交弦拢瑴p少怪異行為
  2. 消除代碼運(yùn)行的不安全之處矾削,
  3. 提高編譯器的效率,增加運(yùn)行速度
  4. 為未來的js新版本做鋪墊豁护。

19 如何判斷一個(gè)對(duì)象是否屬于某個(gè)類哼凯?
使用instanceof 即if(a instanceof Person){alert('yes');}

20 new操作符具體干了什么呢?

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

21 Javascript中,執(zhí)行時(shí)對(duì)象查找時(shí)吝梅,永遠(yuǎn)不會(huì)去查找原型的函數(shù)虱疏?
Object.hasOwnProperty(proName):是用來判斷一個(gè)對(duì)象是否有你給出名稱的屬性惹骂。不過需要注意的是苏携,此方法無法檢查該對(duì)象的原型鏈中是否具有該屬性,該屬性必須是對(duì)象本身的一個(gè)成員对粪。

22 對(duì)JSON的了解右冻?
全稱:JavaScript Object Notation
JSON中對(duì)象通過“{}”來標(biāo)識(shí)装蓬,一個(gè)“{}”代表一個(gè)對(duì)象,如{“AreaId”:”123”}纱扭,對(duì)象的值是鍵值對(duì)的形式(key:value)牍帚。JSON是JS的一個(gè)嚴(yán)格的子集,一種輕量級(jí)的數(shù)據(jù)交換格式乳蛾,類似于xml暗赶。數(shù)據(jù)格式簡(jiǎn)單,易于讀寫肃叶,占用帶寬小蹂随。
兩個(gè)函數(shù):
JSON.parse(str)
解析JSON字符串 把JSON字符串變成JavaScript值或?qū)ο?br> JSON.stringify(obj)
將一個(gè)JavaScript值(對(duì)象或者數(shù)組)轉(zhuǎn)換為一個(gè) JSON字符串
eval('('+json+')')
用eval方法注意加括號(hào) 而且這種方式更容易被攻擊

23 JS延遲加載的方式有哪些?
JS的延遲加載有助與提高頁面的加載速度因惭。
defer和async岳锁、動(dòng)態(tài)創(chuàng)建DOM方式(用得最多)、按需異步載入JS
defer:延遲腳本蹦魔。立即下載激率,但延遲執(zhí)行(延遲到整個(gè)頁面都解析完畢后再運(yùn)行),按照腳本出現(xiàn)的先后順序執(zhí)行勿决。
async:異步腳本乒躺。下載完立即執(zhí)行,但不保證按照腳本出現(xiàn)的先后順序執(zhí)行剥险。

24 同步和異步的區(qū)別?
同步的概念在操作系統(tǒng)中:不同進(jìn)程協(xié)同完成某項(xiàng)工作而先后次序調(diào)整(通過阻塞聪蘸、喚醒等方式),同步強(qiáng)調(diào)的是順序性表制,誰先誰后健爬。異步不存在順序性。
同步:瀏覽器訪問服務(wù)器么介,用戶看到頁面刷新娜遵,重新發(fā)請(qǐng)求,等請(qǐng)求完壤短,頁面刷新设拟,新內(nèi)容出現(xiàn),用戶看到新內(nèi)容之后進(jìn)行下一步操作久脯。
異步:瀏覽器訪問服務(wù)器請(qǐng)求纳胧,用戶正常操作,瀏覽器在后端進(jìn)行請(qǐng)求帘撰。等請(qǐng)求完跑慕,頁面不刷新,新內(nèi)容也會(huì)出現(xiàn),用戶看到新內(nèi)容核行。

25 什么是跨域問題 牢硅,如何解決跨域問題?
可以參考我的另一篇文章什么是跨域以及幾種簡(jiǎn)單解決方案

26 頁面編碼和被請(qǐng)求的資源編碼如果不一致如何處理?
若請(qǐng)求的資源編碼芝雪,如外引js文件編碼與頁面編碼不同减余。可根據(jù)外引資源編碼方式定義為 charset="utf-8"或"gbk"惩系。
比如:http://www.yyy.com/a.html 中嵌入了一個(gè)http://www.xxx.com/test.js
a.html 的編碼是gbk或gb2312的位岔。 而引入的js編碼為utf-8的 ,那就需要在引入的時(shí)候
<script src="http://www.xxx.com/test.js&quot; charset="utf-8"></script>

27 模塊化開發(fā)怎么做堡牡?
模塊化開發(fā)指的是在解決某一個(gè)復(fù)雜問題或者一系列問題時(shí)赃承,依照一種分類的思維把問題進(jìn)行系統(tǒng)性的分解。模塊化是一種將復(fù)雜系統(tǒng)分解為代碼結(jié)構(gòu)更合理悴侵,可維護(hù)性更高的可管理的模塊方式瞧剖。對(duì)于軟件行業(yè):系統(tǒng)被分解為一組高內(nèi)聚,低耦合的模塊可免。
(1)定義封裝的模塊
(2)定義新模塊對(duì)其他模塊的依賴
(3)可對(duì)其他模塊的引入支持抓于。在JavaScript中出現(xiàn)了一些非傳統(tǒng)模塊開發(fā)方式的規(guī)范。 CommonJS的模塊規(guī)范浇借,AMD(Asynchronous Module Definition)捉撮,CMD(Common Module Definition)等。AMD是異步模塊定義妇垢,所有的模塊將被異步加載巾遭,模塊加載不影響后邊語句運(yùn)行。

28 AMD(Modules/Asynchronous-Definition)闯估、CMD(Common Module Definition)規(guī)范區(qū)別灼舍?
AMD 是 RequireJS 在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出。CMD 是 SeaJS 在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出涨薪。
區(qū)別:

  1. 對(duì)于依賴的模塊骑素,AMD 是提前執(zhí)行,CMD 是延遲執(zhí)行刚夺。不過 RequireJS 從 2.0 開始献丑,也改成可以延遲執(zhí)行(根據(jù)寫法不同,處理方式不同)侠姑。
  2. CMD 推崇依賴就近创橄,AMD 推崇依賴前置。
  3. AMD 的 API 默認(rèn)是一個(gè)當(dāng)多個(gè)用莽红,CMD 的 API 嚴(yán)格區(qū)分妥畏,推崇職責(zé)單一。
// CMD
define(function(require, exports, module) {
    var a = require('./a')
    a.doSomething()
    // 此處略去 100 行
    var b = require('./b') // 依賴可以就近書寫
    b.doSomething()
})
// AMD 默認(rèn)推薦
define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好
    a.doSomething();
    // 此處略去 100 行
    b.doSomething();
})

29 requireJS的核心原理是什么?(如何動(dòng)態(tài)加載的咖熟?如何避免多次加載的?如何緩存的柳畔?)
核心是js的加載模塊馍管,通過正則匹配模塊以及模塊的依賴關(guān)系,保證文件加載的先后順序薪韩,根據(jù)文件的路徑對(duì)加載過的文件做了緩存确沸。

30 call和apply
call()方法和apply()方法的作用相同,動(dòng)態(tài)改變某個(gè)類的某個(gè)方法的運(yùn)行環(huán)境俘陷。他們的區(qū)別在于接收參數(shù)的方式不同罗捎。在使用call()方法時(shí),傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉出來拉盾。使用apply()時(shí)桨菜,傳遞給函數(shù)的是參數(shù)數(shù)組。

31 談一談你對(duì)ECMAScript6的了解

32 documen.write和 innerHTML的區(qū)別
document.write()只能重繪整個(gè)頁面

setTimeout(function(){
       document.write('<p>5 secs later</p>');
}, 5000);

window.onload = function() { document.write("HI");

innerHTML可以重繪頁面的一部分

33 回流與重繪
當(dāng)渲染樹中的一部分(或全部)因?yàn)樵氐囊?guī)模尺寸捉偏,布局倒得,隱藏等改變而需要重新構(gòu)建。這就稱為回流(reflow)夭禽。每個(gè)頁面至少需要一次回流霞掺,就是在頁面第一次加載的時(shí)候。在回流的時(shí)候讹躯,瀏覽器會(huì)使渲染樹中受到影響的部分失效菩彬,并重新構(gòu)造這部分渲染樹。完成回流后潮梯,瀏覽器會(huì)重新繪制受影響的部分到屏幕中骗灶,該過程成為重繪

34 DOM操作
(1)創(chuàng)建新節(jié)點(diǎn)
createDocumentFragment() //創(chuàng)建一個(gè)DOM片段
createElement() //創(chuàng)建一個(gè)具體的元素
createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)
(2)添加、移除秉馏、替換矿卑、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的子節(jié)點(diǎn)前插入一個(gè)新的子節(jié)點(diǎn)
(3)查找
getElementsByTagName() //通過標(biāo)簽名稱
getElementsByName() //通過元素的Name屬性的值(IE容錯(cuò)能力較強(qiáng),會(huì)得到一個(gè)數(shù)組沃饶,其中包括id等于name值的)
getElementById() //通過元素Id母廷,唯一性

35 數(shù)組對(duì)象有哪些原生方法,列舉一下
pop糊肤、push琴昆、shift、unshift馆揉、splice业舍、reverse、sort、concat舷暮、join态罪、slice、toString下面、indexOf复颈、lastIndexOf、reduce沥割、reduceRight
forEach耗啦、map、filter机杜、every帜讲、some

36 那些操作會(huì)造成內(nèi)存泄漏
全局變量、閉包椒拗、DOM清空或刪除時(shí)似将,事件未清除、子元素存在引用

37 什么是Cookie 隔離蚀苛?(或者:請(qǐng)求資源的時(shí)候不要帶cookie怎么做)
通過使用多個(gè)非主要域名來請(qǐng)求靜態(tài)文件玩郊,如果靜態(tài)文件都放在主域名下,那靜態(tài)文件請(qǐng)求的時(shí)候帶有的cookie的數(shù)據(jù)提交給server是非常浪費(fèi)的枉阵,還不如隔離開译红。因?yàn)閏ookie有域的限制,因此不能跨域提交請(qǐng)求兴溜,故使用非主要域名的時(shí)候侦厚,請(qǐng)求頭中就不會(huì)帶有cookie數(shù)據(jù),這樣可以降低請(qǐng)求頭的大小拙徽,降低請(qǐng)求時(shí)間刨沦,從而達(dá)到降低整體請(qǐng)求延時(shí)的目的。同時(shí)這種方式不會(huì)將cookie傳入server膘怕,也減少了server對(duì)cookie的處理分析環(huán)節(jié)想诅,提高了server的http請(qǐng)求的解析速度。

38 響應(yīng)事件
onclick鼠標(biāo)點(diǎn)擊某個(gè)對(duì)象岛心;onfocus獲取焦點(diǎn)来破;onblur失去焦點(diǎn);onmousedown鼠標(biāo)被按下

39 flash和js通過什么類如何交互?
Flash提供了ExternalInterface接口與JavaScript通信忘古,ExternalInterface有兩個(gè)方法徘禁,call和addCallback,call的作用是讓Flash調(diào)用js里的方法髓堪,addCallback是用來注冊(cè)flash函數(shù)讓js調(diào)用送朱。

40 Flash與Ajax各自的優(yōu)缺點(diǎn)娘荡?
Flash:適合處理多媒體、矢量圖形驶沼、訪問機(jī)器炮沐。但對(duì)css、處理文本不足回怜,不容易被搜索大年。
Ajax:對(duì)css、文本支持很好鹉戚,但對(duì)多媒體、矢量圖形专控、訪問機(jī)器不足抹凳。

41 有效的javascript變量定義規(guī)則
第一個(gè)字符必須是一個(gè)字母、下劃線(_)或一個(gè)美元符號(hào)($)伦腐;其他字符可以是字母赢底、下劃線、美元符號(hào)或數(shù)字柏蘑。

42 XML與JSON的區(qū)別幸冻?

  1. 數(shù)據(jù)體積方面。JSON相對(duì)于XML來講咳焚,數(shù)據(jù)的體積小洽损,傳遞的速度更快些。
  2. 數(shù)據(jù)交互方面革半。JSON與JavaScript的交互更加方便碑定,更容易解析處理,更好的數(shù)據(jù)交互又官。
  3. 數(shù)據(jù)描述方面延刘。JSON對(duì)數(shù)據(jù)的描述性比XML較差。
  4. 傳輸速度方面六敬。JSON的速度要遠(yuǎn)遠(yuǎn)快于XML碘赖。

43 HTML與XML的區(qū)別?
(1)XML用來傳輸和存儲(chǔ)數(shù)據(jù)外构,HTML用來顯示數(shù)據(jù)普泡;
(2)XML使用的標(biāo)簽不用預(yù)先定義
(3)XML標(biāo)簽必須成對(duì)出現(xiàn)
(4)XML對(duì)大小寫敏感
(5)XML中空格不會(huì)被刪減
(6)XML中所有特殊符號(hào)必須用編碼表示
(7)XML中的圖片必須有文字說明

44 漸進(jìn)增強(qiáng)與優(yōu)雅降級(jí)
漸進(jìn)增強(qiáng):針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能审编,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果劫哼、交互等改進(jìn),達(dá)到更好的用戶體驗(yàn)割笙。
優(yōu)雅降級(jí):一開始就構(gòu)建完整的功能权烧,然后再針對(duì)低版本瀏覽器進(jìn)行兼容眯亦。

45 Web Worker和Web Socket?
web socket:在一個(gè)單獨(dú)的持久連接上提供全雙工般码、雙向的通信妻率。使用自定義的協(xié)議(ws://、wss://)板祝,同源策略對(duì)web socket不適用宫静。
web worker:運(yùn)行在后臺(tái)的JavaScript,不影響頁面的性能券时。
創(chuàng)建worker:var worker = new Worker(url);
向worker發(fā)送數(shù)據(jù):worker.postMessage(data);
接收worker返回的數(shù)據(jù):worker.onmessage
終止一個(gè)worker的執(zhí)行:worker.terminate();

46 JS垃圾回收機(jī)制孤里?

  1. 標(biāo)記清除:
    這個(gè)算法把“對(duì)象是否不再需要”簡(jiǎn)化定義為“對(duì)象是否可以獲得”。
    這個(gè)算法假定設(shè)置一個(gè)叫做根(root)的對(duì)象(在Javascript里橘洞,根是全局對(duì)象)捌袜。定期的,垃圾回收器將從根開始炸枣,找所有從根開始引用的對(duì)象虏等,然后找這些對(duì)象引用的對(duì)象。從根開始适肠,垃圾回收器將找到所有可以獲得的對(duì)象和所有不能獲得的對(duì)象霍衫。

  2. 引用計(jì)數(shù):
    這是最簡(jiǎn)單的垃圾收集算法。此算法把“對(duì)象是否不再需要”簡(jiǎn)化定義為“對(duì)象有沒有其他對(duì)象引用到它”侯养。如果沒有引用指向該對(duì)象(零引用)敦跌,對(duì)象將被垃圾回收機(jī)制回收。
    該算法有個(gè)限制:無法處理循環(huán)引用逛揩。兩個(gè)對(duì)象被創(chuàng)建峰髓,并互相引用,形成了一個(gè)循環(huán)息尺。它們被調(diào)用之后不會(huì)離開函數(shù)作用域携兵,所以它們已經(jīng)沒有用了,可以被回收了搂誉。然而徐紧,引用計(jì)數(shù)算法考慮到它們互相都有至少一次引用,所以它們不會(huì)被回收炭懊。

47 web應(yīng)用從服務(wù)器主動(dòng)推送data到客戶端的方式并级?
JavaScript數(shù)據(jù)推送:commet(基于http長(zhǎng)連接的服務(wù)器推送技術(shù))。
基于web socket的推送:SSE(server-send Event)

48 如何刪除一個(gè)cookie侮腹?
1) 將cookie的失效時(shí)間設(shè)置為過去的時(shí)間(expires)

document.cookie = ‘user=’+ encodeURIComponent(‘name’) + ';
expires=’+ new Date(0);

2) 將系統(tǒng)時(shí)間設(shè)置為當(dāng)前時(shí)間往前一點(diǎn)時(shí)間

var data = new Date();
date.setDate(date.getDate()-1);

49 attribute與property的區(qū)別嘲碧?
attribute是dom元素在文檔中作為html標(biāo)簽擁有的屬性
property是dom元素在js中作為對(duì)象擁有的屬性。
所以父阻,對(duì)于html的標(biāo)準(zhǔn)屬性來說愈涩,attribute和property是同步的望抽,是會(huì)自動(dòng)更新的。但對(duì)于自定義屬性履婉,他們不同步煤篙。

50 Ajax請(qǐng)求的頁面歷史記錄狀態(tài)問題?
(1)通過location.hash記錄狀態(tài)毁腿,讓瀏覽器記錄Ajax請(qǐng)求時(shí)頁面狀態(tài)的變化辑奈。
(2)通過HTML5的history.pushstate,來實(shí)現(xiàn)瀏覽器地址欄的無刷新改變已烤。

文章源自:思否
作者:劉寧Leo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸠窗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胯究,更是在濱河造成了極大的恐慌稍计,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唐片,死亡現(xiàn)場(chǎng)離奇詭異丙猬,居然都是意外死亡涨颜,警方通過查閱死者的電腦和手機(jī)费韭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庭瑰,“玉大人星持,你說我怎么就攤上這事〉穑” “怎么了督暂?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)穷吮。 經(jīng)常有香客問我逻翁,道長(zhǎng),這世上最難降的妖魔是什么捡鱼? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任八回,我火速辦了婚禮,結(jié)果婚禮上驾诈,老公的妹妹穿的比我還像新娘缠诅。我一直安慰自己,他們只是感情好乍迄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布管引。 她就那樣靜靜地躺著,像睡著了一般闯两。 火紅的嫁衣襯著肌膚如雪褥伴。 梳的紋絲不亂的頭發(fā)上谅将,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音噩翠,去河邊找鬼戏自。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伤锚,可吹牛的內(nèi)容都是我干的擅笔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屯援,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼猛们!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狞洋,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤弯淘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吉懊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庐橙,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年借嗽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了态鳖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恶导,死狀恐怖浆竭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惨寿,我是刑警寧澤邦泄,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站裂垦,受9級(jí)特大地震影響顺囊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蕉拢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一特碳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧企量,春花似錦测萎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恕汇,卻和暖如春腕唧,著一層夾襖步出監(jiān)牢的瞬間或辖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工枣接, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颂暇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓但惶,卻偏偏與公主長(zhǎng)得像耳鸯,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子膀曾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容