前端面試題(2)

2021-09-29 14:58:55 字數 2417 閱讀 6199

防止冒泡和捕獲

w3c的方法是e.stoppropagation(),ie則是使用e.cancelbubble = true

取消預設事件

w3c的方法是e.preventdefault(),ie則是使用e.returnvalue = false;

preventdefault它是事件物件(event)的乙個方法,作用是取消乙個目標元素的預設行為。既然是說預設行為,當然是元素必須有預設行為才能被取消,如果元素本身就沒有預設行為,呼叫當然就無效了。什麼元素有預設行為呢?如鏈結,提交按鈕等。

obj.insertbefore(node,existingnode)。

表示的是在指定的已有子節點之前插入新的子節點。node表示要新增的節點,existingnode表示在其之前插入新節點的子節點。如果未規定,則 insertbefore 方法會在結尾插入。

obj.replacechild(newnode,oldnode)  

用新節點替換某個子節點。oldnode節點必須是obj元素子節點,他的返回值是乙個指向已經被替換的那個子節點的引用指標。

使用replacechild()方法的tips:

1,當 oldnode 被替換時,所有與之相關的屬性內容都將被移除。

2,newnode 必須先被建立。

removechild(node)    刪除子節點(元素)

在jquery裡面,我們可以看到兩種寫法:(fu

ncti

on()

)和(function(){}) 和

(funct

ion(

))和(document).ready(function(){})

這兩個方法的效果都是一樣的,都是在dom文件樹載入完之後執行乙個函式(注意,這裡面的文件樹載入完不代表全部檔案載入完)。

而window.onload是在dom文件樹載入完和所有檔案載入完之後執行乙個函式。也就是說$(document).ready要比window.onload先執行。

」」與」=」是不同的,乙個是判斷值是否相等,乙個是判斷值及型別是否完全相等。第乙個是相等符;第二個全等符;

其中第乙個在比較的時候,會進行型別轉換,而第二個則不會,如:

alert(『55』 == 55); //true

alert(『55』 === 55); //false

值nan永遠不會與其他任何值等同

所有物件繼承了兩個轉換方法:

第乙個是tostring(),它的作用是返回乙個反映這個物件的字串。

第二個是valueof(),它的作用是返回它相應的原始值。

短路操作。如果foo為真,就將foo賦給foo,為假就將bar賦給foo。&&則反之,foo為假就返回false,為真就把bar賦給foo。

mvvm定義mvvm是model-view-viewmodel的簡寫。即模型-檢視-檢視模型。【模型】指的是後端傳遞的資料。【檢視】指的是所看到的頁面。【檢視模型】mvvm模式的核心,它是連線view和model的橋梁。它有兩個方向:一是將【模型】轉化成【檢視】,即將後端傳遞的資料轉化成所看到的頁面。實現的方式是:資料繫結。二是將【檢視】轉化成【模型】,即將所看到的頁面轉化成後端的資料。實現的方式是:dom 事件監聽。這兩個方向都實現的,我們稱之為資料的雙向繫結。總結:在mvvm的框架下檢視和模型是不能直接通訊的。它們通過viewmodel來通訊,viewmodel通常要實現乙個observer觀察者,當資料發生變化,viewmodel能夠監聽到資料的這種變化,然後通知到對應的檢視做自動更新,而當使用者操作檢視,viewmodel也能監聽到檢視的變化,然後通知資料做改動,這實際上就實現了資料的雙向繫結。並且mvvm中的view 和 viewmodel可以互相通訊。mvvm流程圖如下:

從圖中可以看出,當執行 new vue() 時,vue 就進入了初始化階段,一方面vue 會遍歷 data 選項中的屬性,並用 object.defineproperty 將它們轉為 getter/setter,實現資料變化監聽功能;另一方面,vue 的指令編譯器compile 對元素節點的指令進行解析,初始化檢視,並訂閱watcher 來更新檢視, 此時wather 會將自己新增到訊息訂閱器中(dep),初始化完畢。當資料發生變化時,observer 中的 setter 方法被觸發,setter 會立即呼叫dep.notify(),dep 開始遍歷所有的訂閱者,並呼叫訂閱者的 update 方法,訂閱者收到通知後對檢視進行相應的更新。因為vue使用object.defineproperty方法來做資料繫結,而這個方法又無法通過相容性處理,所以vue 不支援 ie8 以及更低版本瀏覽器。另外,檢視vue原**,發現在vue初始化例項時, 有乙個proxy**方法,它的作用就是遍歷data中的屬性,把它**到vm的例項上,這也就是我們可以這樣呼叫屬性:vm.aaa等於vm.data.aaa。

jquery,vue,

前端面試題(2)

現在是23 05,俺還沒有洗漱,只為了讓俺的兩位美女同桌能夠背上新鮮出爐的周考題。馬冬梅好好背,蘿蔔加油。廢話不多說,開始更新!今天有點難受哦,bug多的不得了,一直解決不了還老是出現新的bug,還好我有用60年壽命換來的兩位同桌,是她們讓我有了堅持下去的動力,要不然變得和她們一樣可太慘了。廢話不多...

前端面試題

sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...

前端面試題

行內元素有哪些?塊級元素有哪些?空 void 元素有哪些?link和 import的區別是?常見相容性問題?含移動端 html5的離線儲存?描寫一段語義化的html 吧 html5的form如何關閉自動完成功能?什麼是閉包 closure 為什麼要用?localstorage和sessionstor...