語法
1鸯屿、命名:以英文字母(推薦)止潮、下劃線般哼、$開頭
對象
1、屬性名:包括空字符在內(nèi)的任意合法字符串(不強(qiáng)制要求引號引谆菡)但是‘first-name’是必須的蒸眠,這是因?yàn)闃?biāo)識符中(-)是不合法的,但允許下劃線
2杆融、原型:所有通過字面量創(chuàng)建的對象都連接到Object.prototype
3楞卡、對象屬性:typeof 操作符檢測屬性(包括原型屬性)類型;hasOwnProperty不會檢測原型鏈
4脾歇、for in / for
5蒋腮、delete 可刪除對象屬性,不觸及原型屬性
函數(shù)
1藕各、函數(shù)對象連接到Function.prototype(該原型對象本身也連接到Object.prototype)
2池摧、調(diào)用模式:方法調(diào)用模式、函數(shù)調(diào)用模式激况、構(gòu)造器調(diào)用模式和apply調(diào)用模式
3作彤、形參和實(shí)參個數(shù)不匹配時不會導(dǎo)致運(yùn)行錯誤(多的實(shí)參被忽略,少的實(shí)參用undefined)
4乌逐、方法調(diào)用:函數(shù)為對象的屬性時宦棺,成為方法,對象對這個函數(shù)的調(diào)用成為方法調(diào)用黔帕,this指向調(diào)用該函數(shù)的對象
5代咸、函數(shù)調(diào)用:當(dāng)函數(shù)不是對象的一個屬性時,被當(dāng)做函數(shù)調(diào)用成黄,this綁定到全局呐芥,在瀏覽器中為window
6、構(gòu)造器調(diào)用:使用new 操作符創(chuàng)建對象奋岁,函數(shù)中的this指向創(chuàng)建的對象
7思瘟、apply調(diào)用:第一個參數(shù)為函數(shù)應(yīng)用對象,第二個參數(shù)為數(shù)組
8闻伶、arguments:不是數(shù)組而是‘類數(shù)組’的對象滨攻,沒有任何數(shù)組方法,但可借助Array.prototype.slice.apply(null,arguments)語句返回一個數(shù)組
9蓝翰、給原型添加函數(shù)光绕,擴(kuò)充類型的功能
10、遞歸:漢諾塔畜份,階乘等
11诞帐、作用域:不存在塊級作用域,最好在函數(shù)體的頂部聲明可能用到的所有變量
12爆雹、閉包:按鈕監(jiān)聽事例
13停蕉、回調(diào)函數(shù):異步操作
14愕鼓、模塊:模塊是一個提供接口卻隱藏狀態(tài)與實(shí)現(xiàn)的函數(shù)或?qū)ο螅瑥亩帘稳肿兞康氖褂?br>
15慧起、級聯(lián):有些用來修改屬性值的方法不返回任何值菇晃,如果返回this,則可以使用級聯(lián)的形式來調(diào)用所在對象的其方法(每個方法只實(shí)現(xiàn)一種功能蚓挤,優(yōu)化代碼)
16磺送、柯里化:
17、記憶:緩存已計算過的結(jié)果屈尼,減少計算次數(shù)
繼承
在基于類的語言中册着,對象是類的事例,并且類可以從另一個類繼承脾歧。JavaScript是基于原型的語言甲捏,意味著對象直接從其他對象繼承
1、偽類:函數(shù)對象被創(chuàng)建時鞭执,F(xiàn)unction構(gòu)造器產(chǎn)生的函數(shù)對象運(yùn)行類似這樣的代碼:
this.prototype={constructor:this};
2司顿、原型:SubObj.prototype=new SuperObj()
3、函數(shù)化
數(shù)組
1兄纺、刪除:因?yàn)閿?shù)組也是對象大溜,可用delete操作符,但需要注意的是估脆,只是刪除了值(變?yōu)閡ndefined)钦奋,其位置依然保留「碓可使用splice()
2付材、枚舉:盡量避免for in(順序不一定按期望順序)
正則表達(dá)式
方法
1、Array
array.concat() //返回新的數(shù)組圃阳,不影響原數(shù)組
array.join() //返回字符串厌衔,不影響原數(shù)組
array.push() //添加元素到數(shù)組最后
array.pop() //刪除數(shù)組最后一個元素
array.unshift() //添加元素到數(shù)組最前面
array.shift() //刪除數(shù)組第一個元素
array.reverse()//翻轉(zhuǎn)原數(shù)組,并返回翻轉(zhuǎn)后的數(shù)組
array.slice(start,end) //不影響原數(shù)組
array.splice()//增加捍岳、修改富寿、刪除元素,改變原數(shù)組
array.sort()//默認(rèn)為字典排序锣夹,改變原數(shù)組
2页徐、Function
function.apply()
function.call()
3、Number
number.toExpotential(arg) //用指數(shù)形式表示(科學(xué)計數(shù)法)晕城,參數(shù)表示小數(shù)點(diǎn)后的位數(shù)
(整數(shù)位只有1位)
number.toFixed(arg) //參數(shù)表示精度(小數(shù)點(diǎn)位數(shù))
number.toPrecesion(arg) //參數(shù)表示精度(總位數(shù))
number.toString(radix) //參數(shù)表示進(jìn)制數(shù)
以上方法均返回字符串泞坦,不影響原來的值
4、String
string.charAt(pos)
string.charCodeAt(pos)
string.concat(str)
string.indexOf(str,pos)
string.lastIndexOf(str,pos)
string.match(regexp)
string.replace(ser,replace)
string.search(regexp)
string.slice(start,end)
string.split(seperator,limit)//分割字符串砖顷,返回limit個元素的數(shù)組
string.substring()//等價于slice(),但不接受負(fù)參數(shù)贰锁,不推薦使用
string.toLowerCase()
string.toUperCase()
string.fromChartCode(charcode...)
string.localeCompare(that)
5、Object
object.hasOwnProperty()//原型中的屬性不會被檢查
毒瘤
1滤蝠、return {}豌熄;‘{’必須與return位于同一行
2、typeof null 返回‘Object’可通過 value&&typeof value===‘object’判斷對象
3物咳、pareInt(str锣险,radix):把字符串轉(zhuǎn)為整數(shù)(在遇到非數(shù)字時停止解析)
4、浮點(diǎn)型精度問題览闰,可通過乘一個數(shù)在除以這個數(shù)解決
5芯肤、typeof NaN //'number'
6、偽數(shù)組
7压鉴、假值:0崖咨,false,null油吭,‘ ’击蹲,undefined,NaN
8婉宰、對象永遠(yuǎn)不會是真的空對象(原型繼承)
糟粕
1歌豺、==
2、with
3心包、eval 傳遞字符串給JavaScript編譯器并執(zhí)行其結(jié)果
4类咧、缺少塊的語句
5、++ 蟹腾、--
6痕惋、位運(yùn)算符
7、void
JSON