1. 程式人生 > >Javascript 方法apply和call的差別

Javascript 方法apply和call的差別

post key 一個 var keyword 存儲 rip pri span

call與aplly都屬於Function.prototype的一個方法,所以每一個function實例都有call、apply屬性

同樣點:
call()方法和apply()方法的作用同樣:

改變原調用函數的內部this指向。

call()方法和apply()方法的第一個參數都是調用call/apply方法的函數內部this的指向。

不同點:
當調用call/apply方法的函數有參數時,call/apply方法也須要傳參

call的2參、3參...n參分別表示原函數的1參、2參...n-1參

apply的2參是一個數組,數組元素按順序存儲原方法的1參、2參...n參

舉例:

function add(c, d){ 
/*
    這裏的this表示add.call/apply的一參
    假設直接調用add(c,d),那麽this指向window
*/
return this.a + this.b + c + d; 
} 
var o = {a:1, b:3}; 
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16 
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34 
‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    Javascript 方法apply和call的差別