一、JavaScript 中函數的調用的幾種方式 - 函數上下文(this)的指向javascript
做爲對象方法調用;this -> 對象html
做爲函數調用;this -> 全局對象(window)java
做爲構造函數調用;this -> new出來的對象git
和使用 apply 或 call 調用。this -> 傳入的 contextgithub
2、原型,原型鏈web
原型:構造函數包含的proto對象。構造函數都有一個指針指向原型。閉包
原型鏈:訪問一個對象的屬性時,app
對象查找先在該構造函數內查找對應的屬性,若是該對象沒有該屬性的話,webstorm
那麼javascript會試着從該原型上去查找,若是原型對象中也沒有該屬性的話,ide
那麼它們會從原型中的原型去查找,直到查找的Object.prototype也沒有該屬性的話,那麼就會返回undefined;
將函數用做構造函數調用(使用new操做符調用)的時候,新建立的對象會從原型對象上繼承屬性和方法。
3、閉包
內部函數,能夠訪問外部函數的變量。
4、獲取事件源
element.onclick = function(ev){
var e = ev || window.event;//獲取事件
var ele = e.target || e.srcElement;//獲取觸發事件的元素
if(this === ele)//若是這個元素就是觸發事件的元素
alert(ele.innerHTML);//彈出他的內容
}
5、定時器
window.setTimeout([function],[interval]) 設置一個定時器,而且設定了一個等待的時間[interval],當到達時間後,
執行對應的方法[function],當方法執行完成定時器中止(可是定時器還在,只不過沒用了);
window.setInterval([function],[interval]) 設置一個定時器,而且設定了一個等待的時間[interval],當到達時間後,
執行對應的方法[function],當方法執行完成,定時器並無中止,之後每隔[interval]這麼長的時間都會從新的執行對應的方法[function],
直到咱們手動清除定時器爲止; 詳細
6、js操做對象中點操做和中括號操做的區別
中括號運算符老是能代替點運算符。但點運算符卻不必定能所有代替中括號運算符。
中括號運算符能夠用字符串變量的內容做爲屬性名。點運算符不能。
中括號運算符能夠用純數字爲屬性名。點運算符不能。
中括號運算符能夠用js的關鍵字和保留字做爲屬性名。點運算符不能。
能夠看出來,用點操做的時候,字符串變量的時候,返回undefined;純數字的會報錯;關鍵字和保留字js會自動忽略。而這些[]均可以。
7、javascript replace 替換所有
舉例說明: var str = "atetateg".replace("a",""); 則只會替換第一個a var str = "atetateg".replace(/a/g,""); 會替換全部 /g 表明匹配全文
參考資料: