call函数的理解

call() 用来改变this的指向,先来看下call函数的用法。

function fn(){
	console.log(this.a, this.b);
}

fn(); //  undefined undefined

let c = {
	'a': 12,
	'b': 24
}

fn.call(c); // 12  24

再来看下这个小栗子(原文地址:https://www.cnblogs.com/donghezi/p/9742778.html


function fn1() { 
    console.log('fn1----', this);
}

function fn2() { 
    console.log('fn2-----', this);
}

fn1.call(fn2);  //fn1---- function fn2() {    重点一
                //    console.log('fn2-----', this);
                //}

实现一个简易的call函数:

// ES6 call 实现
Function.prototype.es6Call = function (context) {
  var context = context || window;
  context.fn = this;
  var args = [];
  for (var i = 1, len = arguments.length; i < len; i++) {
    args.push('arguments[' + i + ']');
  }
  const result = context.fn(...args);
  delete context.fn;
  return result;
}
//原文:https://blog.csdn.net/u010377383/article/details/80646415 

这里的 context.fn = this; this其实就是上边例子输出的 fn2函数.
args.push('arguments[' + i + ']'); 相当于是在数组中放入了[ arguments[1], arguments[2], ... ]

文章首发: https://mrceel.cn/call函数理解/

发布了40 篇原创文章 · 获赞 13 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览