71.IE 和標(biāo)準(zhǔn)下有哪些兼容性的寫(xiě)法
創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質(zhì),值得信賴!
參考答案:
參與互動(dòng)
72.變量提升
參考答案:
A、js 代碼執(zhí)行的過(guò)程
B、變量提升發(fā)生的環(huán)境:發(fā)生在代碼所處的當(dāng)前作用域。
解析:
對(duì)應(yīng)面試題
參與互動(dòng)
73.如何阻止冒泡與默認(rèn)行為
參考答案:
解析:
當(dāng)需要阻止冒泡行為時(shí),可以使用
當(dāng)需要阻止默認(rèn)行為時(shí),可以使用
參與互動(dòng)
74.js 中 this 閉包 作用域
參考答案:
this:指向調(diào)用上下文
閉包:定義一個(gè)函數(shù)就開(kāi)辟了一個(gè)局部作用域,整個(gè) js 執(zhí)行環(huán)境有一個(gè)全局作用域
作用域:一個(gè)函數(shù)可以訪問(wèn)其他函數(shù)中的變量(閉包是一個(gè)受保護(hù)的變量空間)
參與互動(dòng)
75.javascript 的本地對(duì)象,內(nèi)置對(duì)象和宿主對(duì)象
參考答案:
1.本地對(duì)象
ECMA-262 把本地對(duì)象(native object)定義為“獨(dú)立于宿主環(huán)境的 ECMAScript 實(shí)現(xiàn)提供的對(duì)象"。簡(jiǎn)單來(lái)說(shuō),本地對(duì)象就是 ECMA-262 定義的類(引用類型)。它們包括:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
2.內(nèi)置對(duì)象
JS中內(nèi)置了17個(gè)對(duì)象,常用的是Array對(duì)象、Date對(duì)象、正則表達(dá)式對(duì)象、string對(duì)象、Global對(duì)象
3.宿主對(duì)象
由ECMAScript實(shí)現(xiàn)的宿主環(huán)境提供的對(duì)象,可以理解為:瀏覽器提供的對(duì)象。所有的BOM和DOM都是宿主對(duì)象。
參與互動(dòng)
76.javascript 的同源策略
參考答案:一段腳本只能讀取來(lái)自于同一來(lái)源的窗口和文檔的屬性
解析:
同源策略:限制從一個(gè)源加載的文檔或腳本如何與來(lái)自另一個(gè)源的資源進(jìn)行交互。這是一個(gè)用于隔離潛在惡意文件的關(guān)鍵的安全機(jī)制。(來(lái)自 MDN 官方的解釋)
簡(jiǎn)單來(lái)說(shuō)就是:一段腳本只能讀取來(lái)自于同一來(lái)源的窗口和文檔的屬性,這里的同一來(lái)源指的是主機(jī)名、協(xié)議和端口號(hào)的組合 具體解釋:
(1)源包括三個(gè)部分:協(xié)議、域名、端口(http 協(xié)議的默認(rèn)端口是 80)。如果有任何一個(gè)部分不同,則源不同,那就是跨域了。
(2)限制:這個(gè)源的文檔沒(méi)有權(quán)利去操作另一個(gè)源的文檔。這個(gè)限制體現(xiàn)在:(要記?。?/p>
Cookie、LocalStorage 和 IndexDB 無(wú)法獲取。
無(wú)法獲取和操作 DOM。
不能發(fā)送 Ajax 請(qǐng)求。我們要注意,Ajax 只適合同源的通信。
同源策略帶來(lái)的麻煩:ajax 在不同域名下的請(qǐng)求無(wú)法實(shí)現(xiàn),需要進(jìn)行跨域操作
參與互動(dòng)
77.事件冒泡與事件捕獲
參考答案:
事件冒泡:由最具體的元素(目標(biāo)元素)向外傳播到最不具體的元素
事件捕獲:由最不確定的元素到目標(biāo)元素
參與互動(dòng)
78.foo = foo||bar ,這行代碼是什么意思?為什么要這樣寫(xiě)?
參考答案:
這種寫(xiě)法稱為短路表達(dá)式
解析:
相當(dāng)于
常用于函數(shù)參數(shù)的空判斷
參與互動(dòng)
79.復(fù)雜數(shù)據(jù)類型如何轉(zhuǎn)變?yōu)樽址?/p>
參考答案:
參與互動(dòng)
80.javascript 中 this 的指向問(wèn)題
參考答案:
解析:
全局環(huán)境下,this 始終指向全局對(duì)象(window),無(wú)論是否嚴(yán)格模式;
2.1 普通函數(shù)
普通函數(shù)內(nèi)部的 this 分兩種情況,嚴(yán)格模式和非嚴(yán)格模式。
(1)非嚴(yán)格模式下,沒(méi)有被上一級(jí)的對(duì)象所調(diào)用, this 默認(rèn)指向全局對(duì)象 window。
(2)嚴(yán)格模式下,this 指向 undefined。
2.2 函數(shù)作為對(duì)象的方法
(1)函數(shù)有被上一級(jí)的對(duì)象所調(diào)用,那么 this 指向的就是上一級(jí)的對(duì)象。
(2)多層嵌套的對(duì)象,內(nèi)部方法的 this 指向離被調(diào)用函數(shù)最近的對(duì)象(window 也是對(duì)象,其內(nèi)部對(duì)象調(diào)用方法的 this 指向內(nèi)部對(duì)象, 而非 window)。
特殊例子
2.3 原型鏈中的 this
(1)如果該方法存在于一個(gè)對(duì)象的原型鏈上,那么 this 指向的是調(diào)用這個(gè)方法的對(duì)象,就像該方法在對(duì)象上一樣。
上述例子中,對(duì)象 p 沒(méi)有屬于它自己的 f 屬性,它的 f 屬性繼承自它的原型。當(dāng)執(zhí)行 p.f()時(shí),會(huì)查找 p 的原型鏈,找到 f 函數(shù)并執(zhí)行。因?yàn)?f 是作為 p 的方法調(diào)用的,所以函數(shù)中的 this 指向 p。
(2)相同的概念也適用于當(dāng)函數(shù)在一個(gè) getter 或者 setter 中被調(diào)用。用作 getter 或 setter 的函數(shù)都會(huì)把 this 綁定到設(shè)置或獲取屬性的對(duì)象。
(3)call()和 apply()方法:當(dāng)函數(shù)通過(guò) Function 對(duì)象的原型中繼承的方法 call() 和 apply() 方法調(diào)用時(shí), 其函數(shù)內(nèi)部的 this 值可綁定到 call() apply() 方法指定的第一個(gè)對(duì)象上, 如果第一個(gè)參數(shù)不是對(duì)象,JavaScript 內(nèi)部會(huì)嘗試將其轉(zhuǎn)換成對(duì)象然后指向它。
(4)bind()方法:由 ES5 引入, 在 Function 的原型鏈上, Function.prototype.bind。通過(guò) bind 方法綁定后, 函數(shù)將被永遠(yuǎn)綁定在其第一個(gè)參數(shù)對(duì)象上, 而無(wú)論其在什么情況下被調(diào)用。
2.4 構(gòu)造函數(shù)中的 this
當(dāng)一個(gè)函數(shù)用作構(gòu)造函數(shù)時(shí)(使用 new 關(guān)鍵字),它的 this 被綁定到正在構(gòu)造的新對(duì)象。
構(gòu)造器返回的默認(rèn)值是 this 所指的那個(gè)對(duì)象,也可以手動(dòng)返回其他的對(duì)象。
特殊例子
當(dāng) this 碰到 return 時(shí)
2.5 setTimeout setInterval
(1)對(duì)于延時(shí)函數(shù)內(nèi)部的回調(diào)函數(shù)的 this 指向全局對(duì)象 window;
(2)可以通過(guò) bind()方法改變內(nèi)部函數(shù) this 指向。
3.1 作為一個(gè) DOM 事件處理函數(shù)
當(dāng)函數(shù)被用作事件處理函數(shù)時(shí),它的 this 指向觸發(fā)事件的元素(針對(duì) addEventListener 事件)。
3.2 作為一個(gè)內(nèi)聯(lián)事件處理函數(shù)
(1)當(dāng)代碼被內(nèi)聯(lián)處理函數(shù)調(diào)用時(shí),它的 this 指向監(jiān)聽(tīng)器所在的 DOM 元素;
(2)當(dāng)代碼被包括在函數(shù)內(nèi)部執(zhí)行時(shí),其 this 指向等同于 普通函數(shù)直接調(diào)用的情況,即在非嚴(yán)格模式指向全局對(duì)象 window,在嚴(yán)格模式指向 undefined:
4.1 全局環(huán)境中
在全局代碼中,箭頭函數(shù)被設(shè)置為全局對(duì)象:
4.2 this 捕獲上下文
箭頭函數(shù)沒(méi)有自己的 this,而是使用箭頭函數(shù)所在的作用域的 this,即指向箭頭函數(shù)定義時(shí)(而不是運(yùn)行時(shí))所在的作用域。
4.2 this 捕獲上下文
箭頭函數(shù)沒(méi)有自己的 this,而是使用箭頭函數(shù)所在的作用域的 this,即指向箭頭函數(shù)定義時(shí)(而不是運(yùn)行時(shí))所在的作用域。
在 setTimeout 中的 this 指向了構(gòu)造函數(shù)新生成的對(duì)象,而普通函數(shù)指向了全局 window 對(duì)象。
4.3 箭頭函數(shù)作為對(duì)象的方法使用
箭頭函數(shù)作為對(duì)象的方法使用,指向全局 window 對(duì)象;而普通函數(shù)作為對(duì)象的方法使用,則指向調(diào)用的對(duì)象。
4.4 箭頭函數(shù)中,call()、apply()、bind()方法無(wú)效
4.5 this 指向固定化
箭頭函數(shù)可以讓 this 指向固定化,這種特性很有利于封裝回調(diào)函數(shù)
上面代碼的 init 方法中,使用了箭頭函數(shù),這導(dǎo)致這個(gè)箭頭函數(shù)里面的 this,總是指向 handler 對(duì)象。如果不使用箭頭函數(shù)則指向全局 document 對(duì)象。
4.6 箭頭函是不適用場(chǎng)景
(1)箭頭函數(shù)不適合定義對(duì)象的方法(方法內(nèi)有 this),因?yàn)榇藭r(shí)指向 window;
(2)需要?jiǎng)討B(tài) this 的時(shí)候,也不應(yīng)使用箭頭函數(shù)。
參與互動(dòng)
UML是建模師負(fù)責(zé)的內(nèi)容,問(wèn)到得機(jī)會(huì)很少,也不用去掌握太多,HTTP,HTML,XML,JavaScript,CSS 這些只是做網(wǎng)站的一些輔助知識(shí),平時(shí)做網(wǎng)站的時(shí)候很常用,面試一般不會(huì)問(wèn),但還是必須要掌握
筆試一般會(huì)考你一些語(yǔ)法和你的編程能力
面試一般會(huì)問(wèn)你對(duì)一些框架的理解,比如ssh,再有就是讓你談?wù)勀阕鲞^(guò)的項(xiàng)目等等,還有也會(huì)問(wèn)到你的家庭情況,因?yàn)樯婕暗侥闶欠衲艹霾畹年P(guān)系
在JS中機(jī)試考試的時(shí)候一般會(huì)出js效果。注意自己封裝函數(shù)時(shí),參數(shù)最好不要超過(guò)3個(gè),若要超過(guò),可以用數(shù)組或者對(duì)象。