前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >JavaScript高级(5) 函数进阶

JavaScript高级(5) 函数进阶

作者头像
y191024
发布2022-09-20 20:31:40
发布2022-09-20 20:31:40
2210
举报

难的地方要来了

函数进阶

目标:

我们以前定义函数的方法有两种,命名函数和匿名函数,今天学习第三种,根据大写的F我们可以看出这是一个构造函数

语法格式: new Function('参数1', '参数2', '函数体') 注意函数体是字符串形式

但是应该能感觉到这个方法很麻烦吧,参数和函数体都要用字符串书写...

另外,我们还能得出结论,所有函数都是Function的实例(对象),我们可以打印一下看看

得到的是true,所以也是一个对象

老师顺便给我们总结了以前学过的所有函数的调用方法:

this指向

这些this的指向,是当我们调用函数的时候确定的.调用的方式的不同决定了this指向的不同,一般指向我们的调用者

改变函数内部this指向

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

apply( )方法

apply方法调用一个函数.简单理解为调用函数的方式,但是它可以改变函数this指向

function.apply(thisArgs, [argsArray])

  • thisArg: 在function运行时指定的this值
  • argsArray: 传递的值,必须包含在数组里面 注意一定是数组!!!
  • 返回值就是函数的返回值,因为它就是调用函数

apply的主要应用: 比如说我们可以利用apply借助于数学内置对象求最大值或最小值等

bind( )方法

bind( )方法不会调用函数,但是能改变函数内部this指向

function.bind(thisArg, arg1, arg2, ...)

  • thisArg: 在function函数运行时指定的this值
  • arg1, arg2: 传递的其他参数
  • 返回由指定的this值和初始化参数改造的原函数拷贝

因为bind( )方法不会调用函数,所以会有一个返回值,返回值就是我们function改造完的原函数的拷贝,就是产生了一个新的函数,返回给我们

  • 不会调用原来的函数,可以改变原来函数内部的this指向
  • 返回的是原函数改变this之后产生的新函数
  • 如果有的函数我们不需要立即调用,但是又想改变这个函数的内部this指向,此时就用bind.

我们做个按钮的例子感受一下,当我们点击了按钮以后就禁用按钮,xx秒后才可以再次点击(很常见的例子吧,发送手机验证码那种)

但是还是有点不足,万一btn改了名字呢?所以我们可以将btn换成this

今天就到这啦,明天继续,现在要去学别的了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档