javascript中经常出现一些用方法做参数的方法,大概分为两类:
- 以方法名称做参数
- 以方法对象做参数
1.参数为方法名
e.g :
//写一个方法
function fun(){
alert('fun方法被执行');
}
this.hello('fun');
hello的实现:
/*
* 参数 fun 为方法名称
*/
function hello(fun){
windows[fun].call(this);
}
/*
//如果上文中的 fun 方法带参数
function hello(var1,fun){
windows[fun].call(this,var1);
}
*/
--> 执行hello方法将会弹出信息:【‘fun方法被执行’】
2.参数为方法对象
e.g :
this.hello(function(){
alert('fun方法被执行');
});
hello的实现:
/*
* 参数 fun 为方法名称
*/
function hello(fun){
//以下两种都可以
fun();
fun.call(this);
}
--> 执行hello方法将会弹出信息:【‘fun方法被执行’】
call( )方法详解
该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。
- 语法:
fun.call(thisArg, arg1, arg2, …)
参数 | 注释 |
---|---|
thisArg | 在fun函数运行时指定的this值。(正在执行方法对象的this) |
fun | 要执行的方法的对象(上文的:2.参数为方法对象 ) |
arg1 | fun方法的参数 |
ps:
window[‘fun’]可以取到方法对象,那么是不是window是一个大对象,而自己定义的function是他的内置对象?