当前位置: 首页 > news >正文

石家庄网络营销网站推广wordpress博客收录查询

石家庄网络营销网站推广,wordpress博客收录查询,网站开发算是固定资产吗,下载量最高的wordpress主题之前我们说的都是代码内 this 的默认指向今天我们要来说一下如何能改变 this 指向也就是说, 你指向哪我不管, 我让你指向哪, 你就得指向哪开局在函数的原型( Function.prototype ) 上有三个方法callapplybind既然是在函数的原型上, 那么只要是函数就可以调用这三个方法&#xf…

之前我们说的都是代码内 this 的默认指向

今天我们要来说一下如何能改变 this 指向

也就是说, 你指向哪我不管, 我让你指向哪, 你就得指向哪

开局

在函数的原型( Function.prototype ) 上有三个方法

call

apply

bind

既然是在函数的原型上, 那么只要是函数就可以调用这三个方法,他们三个的作用就是改变函数的 this 指向

接下来咱们便开始介绍这三个方法

准备一个函数

const obj = { name: '对象' }
const arr = [ 100, 200, 300 ]function fn(a, b) {console.group('fn 函数内的打印信息') console.log('a : ', a)console.log('b : ', b)console.log('this : ', this)console.groupEnd()
}fn(1, 2)

直接调用函数,按照 this 指向规则, 该函数内的 this 会指向 window

  • 1 是传递给形参 a 的数据

  • 2 是传递给形参 b 的数据

call 方法

语法: 函数.call( 函数内的 this 指向, 给函数传递的参数, 给函数传递的参数 )

作用: 改变函数内的 this 指向

利用 call 调用 fn 函数,此时 obj 就是 fn 函数内的 this 指向

1 是传递给形参 a 的数据

2 是传递给形参 b 的数据

apply 方法

语法: 函数.apply( 函数内的 this 指向, 数组类数据结构 )

作用: 改变函数内的 this 指向

其实 apply 本质上和 call 方法没有区别,只是给函数传递参数的方式不一样 ,apply 的第二个参数是一个数组类的数据结构, 只要是按照索引排列即可

该数据结构内的每一个依次是给函数进行形参赋值的数据

利用 apply 调用 fn 函数,此时 arr 就是 fn 函数内的 this 指向,第二个参数是一个数组

该数组内 [0] 数据是传递给形参 a 的数据

该数组内 [1] 数据是传递给形参 b 的数据

bind 方法

语法: 函数.bind( 函数内的 this 指向, 给函数传递的参数, 给函数传递的参数 )

作用: 改变函数内的 this 指向

其实 bind 本质上和 call 方法没有区别,但是 bind 不会立即调用函数,而是返回一个被锁定好 this 的新函数

利用 bind 调用 fn 函数,此时 obj 就是你想设置的 fn 函数内的 this 指向

100 是传递给形参 a 的数据

200 是传递给形参 b 的数据

但是, 其实并不会立即执行 fn 函数,而是根据 fn 函数复刻了一份一模一样的函数,新函数复制给了 res 变量,res 函数内的 this 被锁定为了 obj.

通过浏览器查看我们会发现 fn 函数并没有被调用,那是因为 bind 本身就不会调用 fn 函数,如果想指向, 需要通过 res 变量调用

重构

上面我们介绍了一下三个方法的用法,如果你能掌握好, 那么接下来就来看看这三个方法是如何实现的吧

call 方法重构

这样, 我们的 call 重构就完成了

apply 方法重构

这个其实和 call 方法是差不多的, 只是参数不一样了而已,只是根据调用方式的不同, 我们接受参数不在需要 ...args, 直接接收即可

bind 方法重构

这个方法其实也是非常简单,只要利用一下之前重构好的 call 或者 apply 方法都可以

此时 bind 的重构就完成了,是不是很简单呢!

http://www.yayakq.cn/news/43974/

相关文章:

  • iis 子网站经济技术开发区人才网
  • 建设基础化学网站的经验河南县网站建设公司
  • 网站建设需要什么工具整合营销传播案例分析
  • 西安网站维护托管腾讯邮箱注册入口官网
  • 视频背景音乐怎么做mp3下载网站门户网站开发用什么框架好
  • 做冷库的网站网站优化及推广公司
  • 如何添加网站 ico江苏平台网站建设价位
  • 设计最简单的企业网站百度快照抓取的是网站哪里的内容
  • 网站开发大多用什么编程语言自己建一个网站难吗
  • 昆明制作手机网站重庆it培训机构
  • 沧州手机网站建设山东宏远建设有限公司网站
  • 做公司网站 国外系统南昌做seo的公司
  • 网站建设原因网站怎么做内容
  • 湖州住房和城乡建设厅网站建设工程施工合同管理论文
  • seo在线优化网站网站开发要什么基础
  • 仿门户网站源码世界著名室内设计案例
  • 手机站和微网站的区别成全视频在线观看大全腾讯地图
  • 网站开发建设公司电话wordpress边下边看
  • 广西建设工程质量检测协会网站京东网站哪个公司做的
  • 网站怎样优化seoWordpress做APP后端
  • 二级域名 电子商务网站推广方案律师网站建设与维护
  • h5四合一网站建设设计师接单赚钱平台
  • 不动产登记门户网站建设方案百度搜索广告
  • 有哪些做ppt的网站有哪些简单的响应式网页实例
  • 不关闭网站备案wordpress 手赚主题
  • 社交类网站开发需求wordpress怎么屏蔽蜘蛛
  • 用c 做的网站怎么打开吗设计网页与创建网站吗
  • 济南网站建设与维护哈尔滨网站建设网络公司
  • 设计本官方网站 网络服务软件公司找项目
  • 西安网站建设公司 云阔西安网站建设品牌公司推荐