靜態補充CSS型別轉換與JS深拷貝與淺拷貝

2021-09-28 20:33:08 字數 3013 閱讀 3584

常用的塊級元素

常用的塊級block標籤:

... 標題標籤

水平分割線

段落無序列表

... 有序列表

... 定義列表

... **表單

...布局標籤

塊級元素特性

常用的內聯/行內inline標籤

...

... 鏈結

換行(空標籤,不深究)...加粗、傾斜、下劃線、刪除線等文字裝飾標籤

... 下拉列表

行內元素特性

常用的行內塊級inline-block標籤

輸入框文字域/多行輸入框

單元格下拉框

按鈕

行內/內聯特性元素模式轉換display屬性用於元素轉換

通過以上發現->內聯元素無法直接設定寬高、對塊級元素設定寬高才可以奏效。

如果想使元素型別/模式轉換,則可以使用display進行轉換。

元素特性

常用元素特性

(1)block塊級元素

塊級元素特性:自動換行,可以直接設定寬高

(2)inline內聯/行內元素

不換行,無法設定寬高

(3)inline-block 行內塊級元素

既擁有行內元素特性,又有塊級元素特性。不換行且可以直接設定寬高。

(4)none隱藏元素

設定為none後則會隱藏元素,在頁面徹底蒸發

如何區分深拷貝與淺拷貝?

簡單點來說,就是假設b複製了a,當修改a時,看b是否會發生變化

①如果b也跟著變了,說明這是淺拷貝

②如果b沒變,那就是深拷貝,可以脫離a自行改動

淺拷貝案例

這裡就得引入基本資料型別與引用資料型別的概念了。

資料型別

基本資料型別:

number,string,boolean,null,undefined

引用資料型別:

array,object,函式

資料儲存

基本型別–名值儲存在棧

記憶體中,例如let a=1;

引用資料型別–名存在棧記憶體中,值存在於堆記憶體中,但是棧記憶體會提供乙個引用的位址指向堆記憶體中的值,以上面淺拷貝的例子畫個圖:

當a[0]=1時進行陣列修改時,由於a與b指向的是同乙個位址,所以自然b也受了影響,這就是所謂的淺拷貝了。

要是在堆記憶體中也開闢乙個新的記憶體專門為b存放值,就像基本型別那樣,豈不就達到深拷貝的效果了

深拷貝

(1)slice()不帶任何引數,預設返回乙個長度和原陣列相同的新陣列

(2)concat()不帶任何引數,把返回陣列和乙個空陣列合併後返回,即返回乙個長度和原陣列相同的新陣列

(3)直接遍歷,新增到空陣列

**之前的幾種方法只能拷貝一級資料,那如何拷貝所有層級呢?**接下來介紹兩種常用的方案

①jquery的extend

②json的序列化和反序列化

(1)jq的extend方法

語法:$.extend( [deep ], target, object )

①deep表示是否深拷貝,為true為深拷貝,為false為淺拷貝

②target目標物件,其他物件的成員屬性將被附加到該物件

③object拷貝源物件

(2)json的序列化和反序列化

語法:json.parse(json.stringify(***x))

實現原理:先將物件轉為乙個基本資料型別,再執行拷貝

深拷貝和淺拷貝的區別

(1)淺拷貝: 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件/陣列只是原物件的乙個引用

(2)深拷貝: 建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「值」而不是「引用」

深拷貝相關知識

(1)為什麼要使用深拷貝?

希望在改變新的陣列(物件)的時候,不改變原陣列(物件)

(2)怎麼檢驗深拷貝成功?

改變任意乙個新物件/陣列中的屬性/元素, 都不改變原物件/陣列

靜態補充CSS型別轉換

常用的塊級block標籤 標題標籤 水平分割線 段落無序列表 有序列表 定義列表 表單 布局標籤 行內元素特性 塊級元素特性 1.總是從新的一行開始 2.高度 寬度都是可控的 3.寬度沒有設定時,預設為100 4.塊級元素可以包含塊級元素和行內元素 特殊 文字類的塊級元素不能放塊元素,例如 常用的內...

js物件型別賦值與深拷貝

先來看乙個例子 let arr for let i 0 i 5 i console.log arr 此時輸出的arr為 並未向arry中push進不通的內容,原因是因為物件型別賦值時並不是簡單的賦值,而是指向乙個變數,這個變數儲存了物件型別資料的位址,再由這個變數指向這乙個位址。如下圖所示,可做如下...

JS資料型別與型別轉換

1.資料型別 5個基本資料型別 number string boolean undefined null 和乙個引用型別 object 2.判斷型別 typeof 7種 number string boolean undefined object function symbol 3.型別轉換 1 強...