js中一共有4种调用模式:方法调用模式、函数调用模式、构造器调用模式、apply调用模式。这些模式在如何初始化关键参数this上存在差异。 js是函数式的面向对象编程语言,函数可以拥有方法,apply就是函数的一个基本方法。使用这个方法可以调用函数,并修改函数体内this的值。apply方法包括两个参数:第一个参数设置绑定给this的值,第二个是传递给函数的参数数组,比如:var array = [5,4]; var add = function(){ var i, sum = 0; for(i = 0; i < arguments.length; i++){ sum += arguments[i]; } return sum; } var sum = add.apply({}, array);
js是函数式的面向对象编程语言,函数可以拥有方法,apply就是函数的一个基本方法。使用这个方法可以调用函数,并修改函数体内this的值。apply方法包括两个参数:第一个参数设置绑定给this的值,第二个是传递给函数的参数数组,比如:var array = [5,4];
var add = function(){
var i, sum = 0;
for(i = 0; i < arguments.length; i++){
sum += arguments[i];
}
return sum;
}
var sum = add.apply({}, array);
补充#2楼,,传入apply() 方法的第二个参数是参数数组,并且该数组里的每一项都会作为 add() 函数的参数。
apply的作用就是修改this?把一些对象方法,用到另一些对象上?
function proxy(obj,fun)
{
return function(){
return fun.apply(obj,arguments);
};
}var c = {s:0};function add(m)
{
return this.s+=m;
}var d = proxy(c,add);
alert(d(3));
alert(d(7));
alert(d(5));
function proxy(obj,fun)
{
return function(){
return fun.apply(obj,arguments);
};
}var c = {s:0};function add(m)
{
return this.s+=m;
}var d = proxy(c,add);
alert(d(3));
alert(d(7));
alert(d(5));apply就是把this指向obj么? 你这个add貌似不能独立调用啊...