javascript函数的调用模式有哪几种( 四 )


javascript函数的调用模式有哪几种

2.如果使用函数上下文模式调用函数,第一个参数不是指向一个对象,而是指向一个基本数据类型的值,那么函数中this的指向又该指向谁呢?代码如下:
javascript函数的调用模式有哪几种

52行53行54行,他们使用call()的方式调用foo()函数,this分别指向Number包装类型对象、String包装类型对象和Boolean包装类型对象;
55行,56行,57行,58行都指向window对象。 执行结果如下: (当然前提是非严格模式下,严格模式下修改this为null或者undefined都不允许指向window,关于严格模式另起篇章再究)。
javascript函数的调用模式有哪几种

三、函数上下文调用模式的使用场景究竟
1.元素都是整数的数组求最大值
javascript函数的调用模式有哪几种

如果要求出一个整数数组中的最大值,传统的做法是遍历数组,元素两两比较,最后得到最大值,但是这样较繁琐,所以我们联想到js中的Math对象提供的max()方法可以求一堆数中的最大值,所以我们就用apply的方式调用max()方法,不修改它this的指向,只是利用apply()方法的语法特点把arr数组的元素依次的交给Max()方法,这样就能得到arr数组中的最大值。执行结果如下:
javascript函数的调用模式有哪几种

2.伪数组转换成真数组
javascript函数的调用模式有哪几种

原始的做法需要遍历这个伪数组weiArr,然后把元素一个一个的往声明的真数组arr中添加,需要用到遍历所以较复杂。执行结果如下:
javascript函数的调用模式有哪几种

javascript函数的调用模式有哪几种

以上就是全部内容,完整内容分在传智播客的文章当中链接如下:
详解JavaScript中this的指向
修改JavaScript中的this指向
带你揭开BFC神秘的面纱


推荐阅读