从源码中学Vue(二)彻底搞清楚methods中的方法原理( 四 )
bind(methods[key], vm)
首先,methods[key]返回的是函数的定义了。那么这个bind是什么意思?看过我之前分享有关面向对象文章的都应该知道,这应该就是ES5中为我们提供改变this指向的函数了。
不信?
那我们去找下他的源码吧(node_modules\vue\src\shared\\util.js)
可以看到,它首先去找Function的原型下的bind方法,如果存在,就调用nativeBind原生的bind,没有的话就是polyFillBind 兼容性的bind了,很显然,这个bind方法在ES5标准中已经实现。
关于polyFillBind自定义的bind方法我前面的文章中有实现,原理和源码中不太一样。但是效果一样。
所以我们就来看下这个nativeBind的实现吧。
它传入了两个参数,1、要调用的函数,2、改变函数的this指向
好,再回过头我们去看下刚才的 bind(methods[key], vm)就好理解了。在我们调用methods里面的方法的时候,我们已经将该方法的this指向了vm,即我们的vue实例。
推荐阅读
- windows xp|开发人员从泄漏的Windows XP源码中发现了隐藏功能
- 中学生偷看“不良网站”,以为没人能察觉?手机3种痕迹暴露行踪
- 开源组织逼宫微软,希望其开放Windows 7系统源码!
- 新token钱包区块链猫力多币种量化钱包源码免费分享下载供学习研究
- 8年前割肾买“苹果”的高中学生,现在活成什么样,看完唏嘘不已
- 24岁阿里P 7架构师为你进行spring源码深度解析,听完我立马就跪了
- 阿里十年架构师带你从Spring入门到源码深度解析,深入技术内幕
- 2020年的前端工程师请收下这几个Vue.js开源框架
- Linux 源码现状:内核近三千万行代码,Systemd 130万行代码
- 看看京东掌门人刘强东中学时期照片, 网友: 原来以前合照也靠边站