牛客训练
调用函数有3种方式://注意括号与大小写,空指针问题。
obj.func();
func.call(obj,args);//参数列出
func.apply(obj,[m,n......]);//参数数组
//三种方案
//apply function speak(fn,obj) function arg(fn,arr)
{ return fn.apply(obj); } { return fn.apply(fn,arr); }
//或者{ return fn.applya(this,arr);}
//call function speak(fn,,obj) function arg(fn,arr)
{return fn.call(obj); } { return fn.call(fn,arr[0]),arr[1],arr[2];}
//或者{ return fn.call(this,arr[0]),arr[1],arr[2];}
//bind function speak(fn,obj)
{return fn.bind(obj)(); }
例题:(1)函数传参:将数组 arr 中的元素作为调用函数 fn 的参数
输入: function (greeting, name, punctuation)
{return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!']
输出: Hello, Ellie!
function argsAsArray(fn, arr) {
return fn.apply(this,arr);
}
(2)函数上下文 :将函数 fn 的执行上下文改为 obj 对象
输入: function () {return this.greeting + ', ' + this.name + '!!!';},
{greeting: 'Hello', name: 'Rebecca'}
输出: Hello, Rebecca!!!
function speak(fn, obj) {
return fn.apply(obj);
}
(3) 返回函数:实现函数 Function:1返回值为一个函数 f 。2调用返回的函数 f,3所有函数的参数数量为 1,且均为 String 类
输入: functionFunction('Hello')('world')
输出; Hello, world
function functionFunction(str)
{
var f =function(s)
{ return str+", "+s;
} return f;
}