04_javascript函數

什麼是函數?

具有特定功能的n條語句的封裝體
只有函數是可執行的, 其它類型的數據是不可執行的
函數也是對象

爲什麼要用函數?

提高代碼複用
便於閱讀和交流

如何定義函數?

 函數聲明
 表達式

如何調用(執行)函數?

    test()
    new test()
    obj.test()
    test.call/apply(obj)

回調函數

什麼函數纔是回調函數?
你定義的
你沒有直接調用
但最終它執行了(在特定條件或時刻)
常見的回調函數?
DOM事件函數
定時器函數
ajax回調函數
生命週期回調函數

IIFE

理解
全稱: Immediately-Invoked Function Expression 
立即調用函數表達式別名: 匿名函數自調用
作用
 * 隱藏內部實現
 * 不污染外部命名空間

函數中的this

1. 以函數的形式調用時,this永遠都是window
2. 以方法的形式調用時,this就是調用方法的那個對象
3. 當以構造函數的形式調用時,this就是新創建的那個對象
4. 使用call和apply調用時,this是指定的那個對象
理解1
function Person(color) {
    // console.log(this)  
    this.color = color;
    this.getColor = function () {
        // console.log(this)
        return this.color;
    };
    this.setColor = function (color) {
        // console.log(this)
        this.color = color;
    };
}

// 以函數的形式調用時,this永遠都是window 
Person("red"); //this是誰? window
 
var p = new Person("yello"); //this是誰? 
// 當以構造函數的形式調用時,this就是新創建的那個對象
p.getColor(); //this是誰? p
 
var obj = {};
// 使用call和apply調用時,this是指定的那個對象
p.setColor.call(obj, "black"); //this是誰? obj

// 以方法的形式調用時,this就是調用方法的那個對象 
var test = p.setColor;
test(); //this是誰? window
理解2
function fun1() {
  function fun2() {
    console.log(this);
  }
 
  fun2(); //this是誰? window
}
fun1();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章