2023年9月23日,百度前端面試題對話記錄(1)

2021-08-26 06:04:03 字數 1846 閱讀 5068

面試官:如何判斷乙個物件是否為陣列。

我:,說判斷物件的constructor是否指向array, 接著判斷對應的特殊屬性,如length,splice之類。(這裡緊張了下,其實我最肯定會用instanceof判斷的)

面試官:這些都是很容易冒充的。

我:那instanceof判斷。

面試官:嗯,在平常應用中,這個是沒問題的,但是在極端或者非常特殊的情況下會出現問題,你知道是什麼嗎?

我:如果物件繼承陣列的話,會出問題(這裡沒表述好,我的意思是這樣的,function a(){}; a.prototype = [ ];).

面試官:(有些忘記說什麼了)陣列怎麼可以被繼承呢?(我想可能面試官也覺得自己沒太理解我的意思=。=!當時我也沒100%把握這樣會導致intanceof失效)

我:(當時有點亂了貌似- -~~ ~~)那就不清楚了。

面試官:在平常應用的情況下,instanceof確實沒問題,不過如果在頁面有iframe的情況下就會出錯了,即有個a頁面定義了乙個陣列a,頁面又巢狀了乙個iframe,在iframe裡面通過 top.a instanceof array, 是返回false的。(各位去試試,我試了下,確實如此。。)。不過不要緊,這個確實太偏了。 那你知道有什麼更好的方法判斷陣列麼?

我:。。。。。。。

面試官:通過object.prototype.tostring.call(obj)這樣就可以了,jq原始碼也是這樣寫的。

我:額,這樣會返回[object array].

接下來的內容是分析下上面的題目,反正這次面試每題都長了見識了。水準確實不一樣 = 。= !~

首先面試官給的方法肯定是可以的。這裡主要是instanceof的問題。 其實除了面試說的那個特例,instanceof在以下幾個情況下也是不行的,包括我的回答,以下給出一些instanceof會出錯的情況: instanceof的原理見這篇文章:

1、將建構函式的prototype指向array的prototype:

function t(){};

t.prototype = array.prototype

var x = new t();

alert(x instanceof array);//彈出true

2、將建構函式的prototype指向乙個例項化的陣列:

function t(){};

t.prototype = ;

var x = new t();

alert(x instanceof array);//彈出true

3、額外得到的乙個結論:無法改變內建型別的prototype指向其他物件或null。 即從另一方面論證了通過呼叫object.prototype.tostring.call(obj)是行之有效的方法。

array.prototype = 

};var arr = ;

alert(arr instanceof array);//彈出true,說明與array的內建原型物件的引用還是儲存著的

alert(arr.splice)//彈出function splice(); 說明上面的改變array原型指向的**失效,瀏覽器靜默失敗。

/*2023年10月24日更新*/

既然知道了instanceof的原理,那麼面試官所說的 top.arr instanceof array這個問題也自然知道什麼原因了,array實質是window.array, 自然top.array和iframe內的window.array是不同的,所以會導致instanceof失效。如果top.arr instanceof top.array 這樣就沒問題了。

百度前端面試經驗

1.手動封裝乙個tap或者click。2.寫乙個布局 左側定寬高,右側自適應。左側裡面有個頭像,圓形,水平垂直居中。3.盒模型 4.css3動畫都了解哪些,怎麼用 5.手寫 獲取頁面中的全部標籤,排序並輸出前三個多的標籤。6.手寫 獲取url並拿到引數以物件形式輸出。7.跨域解決方法 我說了json...

2023年9月百度優化新方式

的 絕密 優化 之一。當此方法一出,很多八月份受影響的詞大量恢復正常,並且有了很好的排名。的深圳人才網 這類的詞波動相當大,我們的精靈對深圳人才網 這個詞觀察了一段時間,他每天早晨的排名都在前五出現,可一到下午5 30左右這些詞的排名會出現乙個分地域的展現方式,就會出現在第二頁,但搜尋量一般的普通詞...

百度前端面試題

1.列舉你所知道的html行內元素 塊級元素和空 void 元素 答 塊元素 block element html標籤分類明細 address 位址 blockquote 塊引用 center 舉中對齊塊 dir 目錄列表 div 常用塊級容易,也是css layout的主要標籤 dl 定義列表 f...