【JS高级】函数的进阶

函数的定义与调用

1.1函数的定义方式

  1. 函数声明方式function关键字(命名函数)
    1. function fn(){}
  2. 函数表达式(匿名函数)
    1. var fn=function(){}
  3. new Function()
    1. var fn=new Function('参数1','参数2','函数体')

Function里面参数必须是字符串格式

第三种方式执行效率低,也不方便书写,因此较少使用

所有桉树都是Function的实例(对象)

函数也属于对象

1.2函数对的调用方式

1.普通函数

2.对象的方法

3.构造函数

4.绑定事件函数

5.定时器函数

6.立即执行函数

1.3函数内部的this指向问题

https://www.bilibili.com/video/BV1DY41177dM?p=54&spm_id_from=pageDriver&vd_source=9be15c346432f1064d85ec92b746747f

image

2.1改变函数内部this指向

JavaScript为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部this的指向问题,常用的有 bind() .call(). apply()三种方法。

1.call方法

image

1.call第一个可以调用函数第二个可以改变函数内的this指向

2.call的主要作用可以实现继承

image

2.apply方法

image

1.也是调用函数第二个可以改变函数内部的this指向

2.但是他的参数必须是数组(伪数组)

3.apply 的主要应用比如说我们可以利用apply借助于数学内置对象

求最大值Math.max();

image

3.bind方法

image

1.不会调用原来的函数可以改变原来函数内部的this指向
2.返回的是原函数改变this之后产生的新函数

3.如果有的函数我们不需要立即调用但是又想改变这个函数内部的this指向此时用bind

应用

我们有一个按钮,当我们点击了之后,就禁用这个按钮,3秒钟之后开启这个按钮

image

2.2 call(),apply(),bind()总结

相同点

都可以改变函数内部this指向问题

区别点

  1. call和apply 会调用函数,并且改变函数内部this指向.
  2. call和apply传递的参数不一样, call传递参数aru1, aru2..形式apply必须数组形式[arg]
  3. bind 不会调用函数,可以改变函数内部this指向.

主要应用场景

  1. call经常做继承.
  2. apply经常跟数组有关系.比如借助于数学对象实现数组最大值最小值
  3. bind不调用函数但是还想改变this指向.比如改变定时器内部的this指向.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值