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]









全部评论

相关推荐

11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务