【JavaScript】深入理解call,以及与apply、bind的区别

     1、继承(我前面的文章有提到用call实现call继承,有兴趣可以看下。https://www.cnblogs.com/pengshengguang/p/10547624.html)

     2、修改函数运行时this的指向(今天要说的)

// 代码段一 var obj = {name: 'psg'}; function fn(num1, num2) { console.log(num1+num2); console.log(this) } // 1、call里面,第一个参数就会说要变成this的对象 fn(100, 200); //this指向window, num1=100, num2=200 fn.call(100, 200); //this指向100, num1=200, num2=undefined fn.call(obj, 100, 200); //this指向obj, num1=100, num2=200 // 2、在非严格模式下,call里面,第一个参数如果是空、null、undefined,会导致this指向window fn.call(); //this指向window // 3、在严格模式下,call里面,传谁this就是谁,不传,this就是undefined fn.call(); //this指向undefined fn.call(null); //this指向null fn.call(undefined); //this指向undefined

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzdyg.html