call、apply、bind总结

“use strict”;//通知当前浏览器接下来运用的是严厉形式举行编写
var obj = {name: ‘珠峰培训’};
function fn(num1, num2){

console.log(num1+num2);
console.log(this);

}
fn(100, 200);////this —> window num1=100 num2=200
fn.call(100, 200);//this —>100 num1=100 num2=undefined
fn.call(obj, 100, 200);//this —>obj num1=100 num2=200

fn.call();//this —> window 在严厉形式下this—> undefined
fn.call(null);//this —> window 在严厉形式下this—> null
fn.call(undefined);//this —> window 在严厉形式下this—> undefined
call和apply要领的作用是如出一辙的,都是用来转变要领的this关键字,而且把要领实行,而且在严厉形式下和非严厉形式下,关于第一个参数是null/undefined这类状况的规律也是一样的;只不过call在给要领通报参数的时刻,是一个一个通报值的,而apply是吧给要领通报的参数一致放在一个数组中举行操纵。
var returnFn = fn.bind(obj,100,200);
bind:也是用来转变要领中this关键字的。只不过bind只是转变了要领中的this关键字,而且把参数通报过去,然则并没有把要领实行,而是返回了我们转变this关键字今后的效果。

    原文作者:whiteocean
    原文地址: https://segmentfault.com/a/1190000008167293
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞