js 中的 call apply bind 的用法

都是用来指定 this 的环境
相同点:call apply bind 改变 this 指向,第一个参数是需要更改的this
不同点:bind 方法返回的是一个修改过后的的函数需要在调用,apply 第二个参数是 数组,call ,bind 正常字符串可以是多个字符串
1、call,apply 调用一个对象的的一个方法,用另一个对象替换当前对象,eg: B.call(A,args1,args2....)   eg:B.apply(A,[a,b,...]) 
  var name = '小仙女' , age = 18
  var a = {
    name:'孟浩然',
    objage:this.age,
   fn:function() {
     console.log(this)
     console.log(this.name + this.age)
   }
 }
   var fw = {
    name:'小帅哥',
     age:18
   }
    a.fn.call() // 小仙女 19 此时的 this 指向 window
    a.fn.call(fw) // 小帅哥18 此时this 指向 {name:'小帅哥',age:18}
    a.fn.apply(fw) // 小帅哥18 此时this 指向 {name:'小帅哥',age:18}
    a.fn.bind(fw)() // 小帅哥18 此时this 指向 {name:'小帅哥',age:18}
  function getType(a){


2.call 的应用
2.1 利用 call 判断数据类型 可以利用 Object.prototype.toString.call()
   console.log(Object.prototype.toString.call("qq"))            // [Object String] 返回值都是字符串类型
  console.log(Object.prototype.toString.call(12))              // [object Number]
  console.log(Object.prototype.toString.call(false))           // [object Boolean]
  console.log(Object.prototype.toString.call(undefined))       // [object Undefined]
  console.log(Object.prototype.toString.call(null))            // [object Null]
  console.log(Object.prototype.toString.call(function(){}))    // [object Function]
  console.log(Object.prototype.toString.call([]))              // [object Array]
  console.log(Object.prototype.toString.call({}))              // [object Object]









全部评论

相关推荐

在瑞幸干两年,奥特曼都得闪灯
不知名的牛友:奥特曼每天只上3分钟班
点赞 评论 收藏
分享
一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务