摘要:寫在前面本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括第章變量作用域和內存問題對象是按引用傳遞的我理解的是傳值其實傳的是一個指針,該指針指向內存中的某個對象。
寫在前面
本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括
第4章 變量、作用域和內存問題對象是按引用傳遞的(我理解的是傳值其實傳的是一個指針,該指針指向內存中的某個對象)。舉例如下:
const a = {name: "aaa"} const b = a // 這時候a和b其實指向的是同一個對象 console.log(b.name) // aaa b.name = "bbb" console.log(b.name) // bbb console.log(a.name) // bbb 在改變b時a也被改變了
對于簡單的對象(屬性的值都為基本數據類型),賦值時采用const b = {...a}或者const b = Object.assign({}, a)可以使得b中的對象是一個新對象
Lodash提供了cloneDeep()函數用于深拷貝
對象按引用傳遞是因為這樣比較節約內存(畢竟多個對象其實只存了一份嘛),弊端就是容易引起不被希望的變化。
JS具有自動垃圾回收機制,開發人員不用關心內存使用問題,其原理是找出不再繼續使用的變量,釋放其占用的內存
最常用的回收方式是標記清除,另一個不太常見的是引用計數
在引用計數中,無法處理循環引用(對象a中包含指向b的指針,對象b中也包含指向a的指針),舉例如下
function problem() { const a = {} const b = {} a.obj = b b.obj = a }
可以通過在函數結尾斷開引用來解決循環引用的問題,如下
function problem() { const a = {} const b = {} a.obj = b b.obj = a // 別的啥啥操作 // 設為null即可 a.obj = null b.obj = null }
優化內存占用:無用的數據將其值設為null
第5章 引用類型引用類型的值(對象)是引用類型的一個實例
新對象是new操作符后面跟一個構造函數來創建的
數組的sort()方法默認是按從小到大排序,會根據每一項的toString()方法得到的字符串進行排序。由于是比較的是字符串,在大多數情況下,排序結果不是我們期望的(比如"10"<"5"),我們需要自己去寫一個排序函數傳給sort()
數組的concat()可以接受多個參數,如下
const a = [1, 2] const b = a.concat(3, [4, 5]) console.log(b) // [1, 2, 3, 4, 5]
數組的splice()用于在數組中插入一個或者多個值,如下
const a = [1, 4, 5] a.splice(1, 0, 2, 3) // 接收的參數依次為 index,要刪除的元素個數,要插入的元素們 console.log(a) // [1, 2, 3, 4, 5]
所以數組的splice()也可用于替換數組中的某些項,如下
const a = [1, 2, 3, 4, 5] a.splice(1, 2, 22, 33) console.log(a) // [1, 22, 33, 4, 5]
由于函數也是對象,所以函數名其實是一個指向函數對象的指針
定義一個函數可以用函數聲明 function funcName() {}或者函數表達式 const func = function() {}, 建議用函數表達式定義函數,好處是定義之后不可被修改,也不會存在函數聲明提升
函數內部有兩個特殊對象,arguments和this,arguments是一個類數組對象,包含著所有傳入函數中的參數,this指向的是函數執行的環境對象
字符串的toLocaleLowerCase()是針對地區作了特殊處理的(不同地區對于某些值的轉換規則會有些不一樣),相對于toLowerCase()來說更安全
完。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89134.html
摘要:寫在前面本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括。再就是畫圖這種。與瀏覽器沒有依賴關系。 寫在前面 本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括。 第1章 JavaScript簡介 JS誕生時間:1995年(好年輕...) JS誕生背景:表單數據合法性由服務端驗證的用戶體驗不好,希望能在客戶端進行驗證 JS現在用處:如果沒有...
摘要:表示應該立即下載腳本,但不應妨礙頁面中的其他操作可選。表示通過屬性指定的代碼的字符集。表示腳本可以延遲到文檔完全被解析和顯示之后再執行。實際上,服務器在傳送文件時使用的類型通常是,但在中設置這個值卻可能導致腳本被忽略。 第1章 JavaScript 簡介 雖然JavaScript和ECMAScript通常被人們用來表達相同的含義,但JavaScript的含義比ECMA-262要多得多...
摘要:包括元素的高度上下內邊距上下邊框值,如果元素的的值為那么該值為。該值為元素的包含元素。最后,所有這些偏移量都是只讀的,而且每次訪問他們都需要重新計算。為了避免重復計算,可以將計算的值保存起來,以提高性能。 offsetHeight 包括元素的高度、上下內邊距、上下邊框值,如果元素的style.display的值為none,那么該值為0。offsetWidth 包括元素的寬度、左...
摘要:技術的核心是對象即。收到響應后,響應的數據會自動填充對象的屬性,相關的屬性有作為響應主體被返回的文本。收到響應后,一般來說,會先判斷是否為,這是此次請求成功的標志。中的版本會將設置為,而中原生的則會將規范化為。會在取得時報告的值為。 Ajax(Asynchronous Javascript + XML)技術的核心是XMLHttpRequest對象,即: XHR。雖然名字中包含XML,但...
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
閱讀 3952·2021-11-24 09:38
閱讀 1421·2021-11-19 09:40
閱讀 2778·2021-11-18 10:02
閱讀 3691·2021-11-09 09:46
閱讀 1765·2021-09-22 15:27
閱讀 3110·2019-08-29 15:24
閱讀 997·2019-08-29 12:40
閱讀 1683·2019-08-28 18:24