"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关键字以后的结果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。