JS函数四种调用模式
2017-12-07 09:30
501 查看
1.函数模式
this指向window全局对象
2.方法模式
this指向调用这个方法的对象
3.构造函数模式
this 使用new创建出来的对象
4.上下文模式
this指向window全局对象
在上下文调用模式中,可以修改this的值,也就是可以修改函数的调用方式
使用如下两个方法,可以修改函数调用上下文,也就是this的值
apply
api文档中的语法语句中 [] 代表括起来的东西可有可无
函数.apply(对象, 函数需要参数列表,是一个数组)
call
函数.call(对象,arg1,arg2,arg3...argn)
call和apply的区别
1.第一个参数都是要把this修改成的对象
2.当函数需要参数的时候,那么apply是用数组进行参数的传递
3.而call是使用单个的参数进行传递
call用于确定了函数的形参有多少个的时候使用
apply用于函数的形参个数不确定的情况
//案例:求一个数组中的最大值
var arr = [9, 1, 4, 10, 7, 22, 8];
//apply方法的第二个参数 是一个数组
// 在调用的时候,会将数组中的每一个元素拿出来,作为形参,挨个传递给函数
//apply方法和call方法第一个参数传递null的时候,都表示为函数调用模式
//也就是将this指向window
var max = Math.max.apply(null, arr);
console.log(max);
//案例:将传入的参数打印,参数之间用-相互连接
function foo() {
//伪数组不具有join方法,所以这个时候就要考虑去借用一下数组的join方法
var str = [].join.apply(arguments,["-"]);
return str;
}
var str = foo(1, 3, "abc", "ffff", 99) // 1-3-abc-ffff-99
console.log(str);
fun.call(null)===fun.call(window);
在全局对象访问一个未定义变量会报错
用对象访问一个未定义的变量返回undifined
arr.push(arr1):会把整个数组arr传进去
arr.push.apply(arr,arr1):会把arr1拆开再传进去
使用call和apply会将传入的第一个参数为值类型的对象转换成引用类型,档位null或者undefined
this指向window全局对象
2.方法模式
this指向调用这个方法的对象
3.构造函数模式
this 使用new创建出来的对象
4.上下文模式
this指向window全局对象
在上下文调用模式中,可以修改this的值,也就是可以修改函数的调用方式
使用如下两个方法,可以修改函数调用上下文,也就是this的值
apply
api文档中的语法语句中 [] 代表括起来的东西可有可无
函数.apply(对象, 函数需要参数列表,是一个数组)
call
函数.call(对象,arg1,arg2,arg3...argn)
call和apply的区别
1.第一个参数都是要把this修改成的对象
2.当函数需要参数的时候,那么apply是用数组进行参数的传递
3.而call是使用单个的参数进行传递
call用于确定了函数的形参有多少个的时候使用
apply用于函数的形参个数不确定的情况
//案例:求一个数组中的最大值
var arr = [9, 1, 4, 10, 7, 22, 8];
//apply方法的第二个参数 是一个数组
// 在调用的时候,会将数组中的每一个元素拿出来,作为形参,挨个传递给函数
//apply方法和call方法第一个参数传递null的时候,都表示为函数调用模式
//也就是将this指向window
var max = Math.max.apply(null, arr);
console.log(max);
//案例:将传入的参数打印,参数之间用-相互连接
function foo() {
//伪数组不具有join方法,所以这个时候就要考虑去借用一下数组的join方法
var str = [].join.apply(arguments,["-"]);
return str;
}
var str = foo(1, 3, "abc", "ffff", 99) // 1-3-abc-ffff-99
console.log(str);
fun.call(null)===fun.call(window);
在全局对象访问一个未定义变量会报错
用对象访问一个未定义的变量返回undifined
arr.push(arr1):会把整个数组arr传进去
arr.push.apply(arr,arr1):会把arr1拆开再传进去
使用call和apply会将传入的第一个参数为值类型的对象转换成引用类型,档位null或者undefined
相关文章推荐
- js高级——函数的四种调用模式
- JS 四种函数调用模式
- js 四种函数调用模式
- JS面向对象函数的四种调用模式
- 6- js 函数的四种调用方式
- js 函数的方法 函数调用模式 this => that arguments
- 函数的四种调用模式
- 函数的四种调用模式
- JS---- 函数调用模式
- js 函数的调用模式
- 函数的四种调用模式
- 函数四种调用模式以及this指向
- 深入理解JavaScript系列(一): 函数的四种调用模式
- js函数之四大调用模式
- js高级_函数的四种调用形式
- js中call和apply(函数的上下文调用模式)详解
- javascript中四种函数调用模式及对this的不同绑定
- Javascript 函数的四种调用模式
- Javascript的四种(函数)调用模式