第四章 變量/做用域和內存問題正則表達式
1.從一個變量給另外一個變量賦值時,若是是賦基本類型值,是建立一個值副本,兩個變量操做互不影響。若是是賦引用類型值,是建立一個引用(指針)的副本。兩個變量指向同一個對象,操做互相會影響。數組
2.函數傳參時,若是傳基本類型值,函數局部做用域修改值不會再全局做用域體現出來。傳引用類型值,局部做用域修改對象會在全局做用域體現出來。P71瀏覽器
3.檢測基本數據類型用typeof,檢測引用類型值時,想知道是什麼類型的對象,用instanceof。app
4.js沒有塊級({})做用域,一個function裏的變量都是透明的。dom
5.確保佔用最少的內存可讓頁面得到更好的性能。而優化內存佔用最好的方式,是爲全局變量和全局對象的屬性解除引用——再也不用時將值設置爲null。函數
第五章 引用類型性能
1.引用類型有Object、Array、Date、RegExp、Function(函數其實是實例)、基本包裝類型(Boolean、Number、String)、Global、Math。優化
2.全部對象都具備toLocaleString(),toString(),valueOf()方法。this
3.引用類型Object的表示方法有兩種:編碼
1 //構造函數方法 2 var person = new Object(); 3 person.name = "xiaoming"; 4 person.age = 29; 5 6 //對象字面量方法 7 var person = { 8 name : "xiaoming", 9 age : 29 10 };
4.引用類型Array每一項能夠保存不一樣類型的數據,它的表示方法有兩種:
1 //構造函數方法 2 var color = new Array(); 3 var color = new Array(3); 4 var color = new Array("red","blue","green"); 5 6 //數組字面量 7 var color = []; 8 var color = ["red","blue","green"];
5.數組的各類方法:
轉換方法:toString()返回數組用逗號拼接的字符串
join()返回用指定符號拼接的數組的字符串
棧方法:push()尾部插項,返回數組長度,
pop()尾部刪項,返回被刪項。
隊列方法:shift()頭部刪項,返回被刪項,
unshift()頭部插項,返回數組長度。
排序方法:reverse()反轉數組,
sort()默認按字符比較方法排序,能夠加比較函數。P93
操做方法:concat()將兩個數組合並,返回新數組,不改變原來數組
slice()取數組指定下標的一部分,返回新數組,不改變原來數組
splice(a,b,c....)在a位置上開始刪除b個數,並將c...等插進a的位置,返回的是被刪除的數的數組,改變原來的數組。
位置方法:indexOf()返回指定值的下標
lastIndexOf()從末尾往前找,但下標仍是從頭開始數
迭代方法:every()設置回調函數,若是每項都符合條件,返回true
some()設置回調函數,若是有一項符合條件,返回true
filter()設置回調函數,返回符合條件的項的新數組
map()設置回調函數,對全部項執行相同操做,返回新數組
forEach()設置回調函數,遍歷數組,返回結果
(回調函數參數都是value,index,array)
歸併方法:reduce()設置回調函數,對數組項進行迭代,返回結果。
reduceRight()設置回調函數,從末尾開始迭代。
(回調函數參數都是previous,current,index,array)
6.RegExp類型能夠用字面量定義,也能夠用構造函數定義(雙重轉義)
7.RegExp類型的方法:exec()和test()
8.函數名僅僅是指向函數對象的指針,函數定義方法有兩種:
1 //函數聲明 2 function sum(a,b){ 3 return a+b; 4 } 5 6 //函數表達式 7 var sum = function(a,b){ 8 return a+b; 9 };
9.函數名只是函數類型的一個變量,聲明兩個同名函數只是將變量替換,所以函數沒有重載,也所以函數能夠做爲值經過函數名這個變量被傳遞和返回。
10.函數內部有兩個對象:arguments和this
arguments是函數參數數組,arguments.callee指向函數。
this指向當前執行的環境對象。
11.函數做爲對象,有本身的屬性和方法。
屬性:length命名參數的個數。
prototype保存全部實例的方法。
方法:apply()和call()功能同樣,區別在於函數第二個參數call是逐個列出參數,apply可使用數組。這兩個函數的重要做用是擴充函數做用域。P117和P114的栗子
bind()綁定(手動指定)函數的做用域。
12.基本包裝類型不建議顯式建立(使用new),在建立使用相應的基本類型值時,後臺會自動建立相應的基本包裝類型。
13.基本包裝類型String方法:
字符方法:charAt()返回指定位置的字符
可使用[]像數組同樣訪問字符
charCodeAt()返回指定位置字符的編碼
操做方法:concat()將多個字符串拼接起來,返回新字符串
slice()返回指定範圍的子字符串。傳入負數時,將負數和原字符串長度相加
substr()返回指定起點和長度的子字符串。傳入負數時,將第一個參數加上字符串長度,第二個參數變爲0.
substring()返回指定範圍的子字符串。傳入負數時,將參數變爲0
位置方法:indexOf()返回指定子字符串的位置,沒匹配返回-1
lastIndexOf()返回指定子字符串的位置,從後往前搜索,下標仍是從頭數
trim()返回字符串的副本,刪除前置和後綴全部空格
大小寫轉換方法:toLowerCase(),toLocaleLowerCase(),toUpperCase(),toLocaleUpperCase()
模式匹配方法:match()傳入正則表達式,返回匹配項和捕獲組匹配項的數組
search()傳入正則表達式,返回第一個匹配項的位置,沒匹配返回-1
replace()用字符串替換原字符串的部分。返回新字符串
split()將字符串按特定字符分割成字符串數組
localeCompare()方法:傳入字符串,比較參數字符串和原字符串,若是原字符串在字母表排在前面,返回負數,相等返回0,不然返回正數。
fromCharCode()方法:傳入一個或多個字符編碼,返回字符串。
14.Global對象,是單體內置對象,自己就存在,不用手動實例化。瀏覽器將這個全局對象做爲window對象的一部分加以實現。例如Object、Array、String、Global、Math。
URI編碼方法:encodeURI(),encodeURIComponent(),decodeURI(),decodeURIComponent()
eval()方法
15Math對象,相關方法:min(),max(),ceil(),floor(),round(),random()...