js中的call()、apply()、bind()

js中的一个核心概念就是对this的理解,关于this前面也有说过,不过在有些状况下,仍是须要手动去改变this的指向,这里总结一下,js中关于this操做的三种方法html

  • call()
  • apply()
  • bind()

这三个方法都是Function中的内置函数,一个函数调用call、apply、bind回去原型链中线上寻找这三个方法,这三个方法都用于改变this的指向问题,虽然他们做用相同,做为三种不一样的方法,他们之间依然有一些差异数组

  1. function.call(obj,val1,val2);   // obj对象将代替function中的this,而且往function中传入val1和val2,而且call的同时,function函数执行
  2. function.apply(obj,[val1,val2]);   // obj对象将代替function中的this,而且往function中传入val1和val2,传入的参数为数组形式,而且apply的同时,function函数执行
  3. function.bind(obj,val1,val2);   // obj对象将代替function中的this,而且往function中传入val1和val2,bind的同时,function函数不执行

一、基本应用app

看如下代码函数

默认状态下this指向window对象,当传入的值为空、null或者undefined的时候,this也是指向window对象,其他传入的基本类型值,this均指向传入值自己this

二、在对象继承及传参时的应用3d

一样直接看代码htm

从上面的代码中能够看出,call、apply、bind三者之间的差异对象

call和apply用法基本相同,只是传参的方式不一样而已,call是一个一个的传值,apply则传入一个数组blog

bind方法的传参方式同call相似,可是bind修改了this指向以后并不会立刻起做用,须要调用如下才能够继承

相关文章
相关标签/搜索