call,apply,bind使用区别

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var m = '我是全局的m'
    function fn (a,b){
      console.log(a,b,this.m);
    }
    var obj = {m:'我是obj的m'}
    // 函数对象:将一个函数作为对象使用
    // 实例对象:new函数调用产生的对象简称为对象
    fn(2,3,4) // 2 3 "我是全局的m"
    fn.call(obj,2,3,4) // 2 3 "我是obj的m"
    fn.apply(obj,[2,3,4]) // 2 3 "我是obj的m"

    // bind返回一个新的函数
    fn.bind(obj,5)(2,3,4) // 5 2 "我是obj的m"
    fn.bind(obj,5,6)(2,3,4) // 5 6 "我是obj的m"
  </script>
</body>
</html>
原文地址:https://www.cnblogs.com/zwhbk/p/12437352.html