close

因為在 JavaScript 裡,function 也是一個變數(物件),所以可以當成參數來傳遞
但是那要呼叫的時候呢?就只能用 call 或是 apply 來呼叫
這裡簡單整理一下重點
1. 第一個參數必須是件物,在呼叫的時候,會指派給該 function 的 this 來使用
2. 第二個之後參數,就是呼叫該 function 時所需要的參數
    call 時為一個一個參數
    apply 為一個陣列

--

<script type="text/javascript">
/**
 * call 及 apply 測試
 */
var obj = 
{
    method_1 : function (n) 
    {
        // 印出目前 this 的值
        console.log(this);
        console.log("n = " + n);
    }
};

// 物件2,等一下要當成參數傳進 call 及 apply 中
var obj2 = 
{
    hello:'world'
};

/**
 * 一般方法呼叫 method_1
 *
 * 結果:
 * Object { method_1=function()}
 * n = 1
 */
obj.method_1(1);

/**
 * 使用 call 呼叫 method_1
 *
 * 結果:
 * Object { hello="world"}
 * n = 2
 */
obj.method_1.call(obj2, 2);

/**
 * 使用 apply 呼叫 method_1
 *
 * 結果:
 * Object { hello="world"}
 * n = 3
 */
obj.method_1.apply(obj2,[3]);
</script>

 

arrow
arrow
    全站熱搜

    wbkuo 發表在 痞客邦 留言(0) 人氣()