1. 程式人生 > >前端面試題整理

前端面試題整理

布局 成了 全局變量 兩個 script 創建 message 例如 內部函數

一、幾種常用的布局方式?

  1、固定布局

    寬度,高度固定,頁面被一個固定網頁包裹,容器不能移動,頁面的寬高不隨頁面的變化而變化,固定頁面是目前布局的主流方式,這樣布局設計簡單,更容易定義,但是由於屏幕尺寸的不同,特別是移動端各個設備的不同,這種布局在靈活性方式可用度不高。

  2、流式布局

    流式布局以百分比為主要形式,讓屏幕自適應,這種布局方式靈活,能夠根據屏幕的情況變化,但是這種方式的設計效果不太容易控制。一般移動端結合rem用的比較多,pc端用的不多。

 3、彈性布局

    彈性布局布局方便靈活,但是兼容性不是很好ie9以下均不支持,一般移動端用的較多。

 4、浮動布局

    浮動布局關鍵字float,可以設置left或者right,它使元素脫離文檔流進而達到布局的目的,也是目前比較主流的布局方式之一。但是使用浮動布局結束後,別忘記清除浮動哦。

5、定位布局

    定位布局也是目前比較常用的一種布局方式,關鍵詞: position: fixed;固定布局,將元素固定在一個位置,不隨頁面移動而移動,position: relative;相對定位,相對於元素自身定位,不脫離文檔流,相當於定義一個參照物,一般和絕對定位結合使用,position: absolute;絕對定位,脫離文檔流,一般和相對定位結合使用,如果不定義相對定義,將會相對於整個瀏覽器定位,所以定位布局,一般情況下都是相對定位和絕對定位結合著來,相當定位相當於劃定一個勢力範圍,制定一個封閉的容器塊,然後絕對定位就行對於相對定位來定位,從而達到有效的布局。

 6、margin和padding

   margin是外邊距,padding內邊距,外邊距是盒子與盒子之間的距離,內邊距是盒子的邊和盒子內部元素的距離,因此在使用的時候應該有選擇的使用。

總結:其實布局的方式不是唯一的,根據不同的需求,選擇不同的布局方式,無非就是怎麽漂亮怎麽來,怎麽方便怎麽來,怎麽實用怎麽來。??

二、對閉包的理解?

  一個函數能夠訪問其函數外部作用域中的變量。

  閉包的三大特點:1.函數嵌套函數 2.內部函數可以訪問外部函數的變量 3.參數和變量不會收回

  閉包的作用:可以設計私有變量及方法。

總結:

1、閉包是指有權訪問另一個函數作用域中的變量的函數,創建閉包的最常見的方式就是在一個函數內創建另一個函數,通過另一個函數訪問這個函數的局部變量。閉包的缺點就是常駐內存,會增大內存使用量,使用不當很容易造成內存泄露。

2、不必糾結到底怎樣才算閉包,其實你寫的每一個函數都算作閉包,即使是全局函數,你訪問函數外部的全局變量時,就是閉包的體現。 三、原型和原型鏈?   在JavaScript中原型是一個prototype對象,用於表示類型之間的關系。prototype和_proto_都是原型對象,prototype是公開的,_proto_是受保護的。

  對象之間的繼承關系,在JavaScript中是通過prototype對象指向父類對象,直到指向Object對象為止,這樣就形成了一個原型指向的鏈條,專業術語稱之為原型鏈。

例如: Student → Person → Object ,學生繼承人類,人類繼承對象類

    技術分享圖片

四、關於跨域?

  同源策略限制了從同一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。這是一個用於隔離潛在惡意文件的重要安全機制。

  瀏覽器是從兩個方面做同源策略的,一是針對接口的請求,二是針對dom的查詢。

  同源策略下接口請求:

    1、JSONP(jsonp只能發get請求)

    2、空iframe加form

    3、跨域資源共享

    4、代理

  同源策略限制下Dom查詢

  1、postMessage()

    windows.postMessage()是HTML5的一個接口,專註實現不同窗口不同頁面的跨域通訊。

2、document.domain()這種方式只適合主域名相同,但子域名不同的iframe跨域。

  3、canvas操作圖片的跨域問題

  

      

前端面試題整理