目录
#博学谷IT学习技术支持#
1. 函数的定义和调用
1.1 函数的定义方式
1. 函数声明方式 function 关键字 (命名函数)
2. 函数表达式 (匿名函数)
3. new Function()
var fn = new Function('
参数
1','
参数
2'..., '
函数体
')
Function 里面参数都必须是字符串格式
第三种方式执行效率低,也不方便书写,因此较少使用
所有函数都是 Function 的实例(对象)
函数也属于对象
代码演示:
<script>
// new Function()
var fn = new Function('a', 'b', 'console.log(a + b)');
fn(1,2);
</script>
1.2 函数的调用方式
1. 普通函数
2. 对象的方法
3. 构造函数
4. 绑定事件函数
5. 定时器函数
6. 立即执行函数
2. this
2.1 函数内 this 的指向
这些 this 的指向,是当我们调用函数的时候确定的。 调用方式的不同决定了this 的指向不同
一般指向我们的调用者.
![](https://img-blog.csdnimg.cn/11bb637e1bd144729d2b803cf01081a3.png)
2.2 改变函数内部 this 指向
JavaScript 为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部 this 的指向问题,常用
的有 bind()、 call()、apply() 三种方法。
1. call 方法
call() 方法调用
一个对象。简单理解为调用函数的方式,但是它可以改变函数的 this 指向。
fun.call(thisArg, arg1, arg2, ...)
thisArg:在 fun 函数运行时指定的 this 值
arg1,arg2:传递的其他参数
返回值就是函数的返回值,因为它就是调用函数
因此当我们想改变 this 指向,同时想调用这个函数的时候,可以使用 call,比如继承
代码演示:
<script>
// 1. call 方法
var obj = {
a : 1,
b : 2,
c : 3
};
function fn() {
console.log(this.a + this.b + this.c);
};
fn.call(obj);
</script>