首页 > 新闻中心

欧宝体育|函数绑定方式bind的自定义实现过程

时间:2021-02-23 12:11:26 浏览: 59 来源:网络整理 作者:佚名

函数绑定方式bind的自定义实现过程欧宝体育

函数绑定方式bind的自定义实现过程

现在的场景是这样的,我有一个对象,我在点击按键时要调用该对象的外置方式来输出详尽信息,于是代码如下:


    

输出的结果却是:

bind函数小于零

1.png

原因是bind函数小于零,此时的this对象指向的是该按键而并非student对象。为了能使this指向student对象,我们须要做的就是去保存student对象的执行环境,这里想到的第一个方式就是闭包。

所以修改完的代码如下:

var student = {
       name:"xm",
       school:"SUFE",
       SysInfo:function(event){
           console.log('姓名为--',this.name,'  学校为---',this.school)
       }
   }
   var btn = document.querySelector('#btn')
   btn.addEventListener('click',function(event){
      student.SysInfo()
// return student.SysInfo()
   })

这样一来就可以领到值了。

bind函数小于零

2.png

但是还有另一个方式,就是使用函数绑定去bind函数小于零,可以将函数绑定到指定的执行环境当中。

bind()函数接受一个函数和一个环境,并返回一个在给定环境中调用给定函数的函数。

function bind(fn,context){
      return function{
            return fn.call(context,args)
}

function bind(fn,context){
      return function(){
            return fn.apply(context,arguments)
        }
   }
   var student = {
       name:"xm",
       school:"SUFE",
       SysInfo:function(event){
           console.log('姓名为--',this.name,'  学校为---',this.school)
       }
   }
   var btn = document.querySelector('#btn')
   btn.addEventListener('click',bind(student.SysInfo,student))

注意,这里的arguments不是一个参数,而是js中的一个类字段对象,用来接受传递参数的,并且这儿的arguments对应的是student的方式Sysinfo的参数列表。

最终结果如下:

bind函数小于零

3.png

可以看见成功调用了技巧。

在ES5,之后有一个原生的bind方式可供使用,具体使用方法如下:

student.SysInfo.bind(student)

只要将sutdent对象的地址传递进去即可。

欧宝体育老王
上一篇:欧宝体育|4399创世兵魂终极武器炎龙亮相 战地医院集结令 下一篇: 欧宝体育|邮政储蓄10万无息按揭 邮政储蓄10万无息贷款是真的吗?
商务合作
商务合作
欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育欧宝体育