JavaScript怎样扭转this指向?下面本篇文章给人人介绍一下JS扭转this指向的三种方法,希望对于人人有所帮助!
点击关上视频解说更加细致
this到处可见,失常谁调用,this就指向谁。this在分比方情况下,分比方感化下,显示的也分比方。
下列多少种状况,this都是指向window
一、全局感化下,this指向的是window
console.log(window);console.log(this);console.log(window == this); // true
二、函数自力调历时,函数外部的this也指向window
function fun() { console.log('我是函数体'); console.log(this);// Window }fun();
三、被嵌套的函数自力调历时,this默认指向了window
function fun1() {function fun2() {console.log('我是嵌套函数');console.log(this);// Window}fun2();}fun1();
四、自调实行函数(立即实行)中外部的this也是指向window
(function() {console.log('立即实行');console.log(this); // Window})()
需要分外细致的是:
构造函数中的this,用于给类界说成员(属性以及方法)
箭头函数中不this指向,如果在箭头函数中有,则会向上一层函数中查找this,直到window
一、call()方法
call()方法的第一个参数必须是指定的工具,然前方法的原参数,挨个放在前面。
(1)第一个参数:传入该函数this实行的工具,传入甚么强迫指向甚么;
(2)第二个参数最先:将原函数的参数往后顺延一位
用法:函数名.call()
function fun() {console.log(this);// 本来的函数this指向的是 Window}fun();function fun(a, b) {console.log(this); // this指向了输入的 字符串callconsole.log(a + b);}//应用call() 方法扭转this指向,此时第一个参数是 字符串call,那末就会指向字符串callfun.call('call', 2, 3)// 前面的参数便是本来函数自带的实参
二、apply()方法
apply()方法的第一个参数是指定的工具,方法的原参数,对于抗放在第二个数组参数中。
(1)第一个参数:传入该函数this实行的工具,传入甚么强迫指向甚么;
(2)第二个参数最先:将原函数的参数放在一个数组中
用法:函数名.apply()
function fun() {console.log(this);// 本来的函数this指向的是 Window}fun();function fun(a, b) {console.log(this); // this指向了输入的 字符串applyconsole.log(a + b);}//应用apply() 方法扭转this指向,此时第一个参数是 字符串apply,那末就会指向字符串applyfun.apply('apply', [2, 3])// 原函数的参数要以数组的形式显示
三、bind()方法
bind()方法的用法以及call()同样,间接运行方法,需要细致的是:bind返回新的方法,需要从新
调用
是需要自本领动调用的
用法:函数名.bind()
function fun() {console.log(this);// 本来的函数this指向的是 Window}fun();function fun(a, b) {console.log(this); // this指向了输入的 字符串bindconsole.log(a + b);}//应用bind() 方法扭转this指向,此时第一个参数是 字符串bind,那末就会指向字符串bindlet c = fun.bind('bind', 2, 3);c(); // 返回新的方法,需要从新调用// 也能够应用下面两种方法停止调用// fun.bind('bind', 2, 3)();// fun.bind('bind')(2, 3);
本文链接:https://addon.ciliseo.com/san-zhong-fang-fa-qian-xi-javascript-ru-he-gai-bian-this-zhi-xiang.html
网友评论