三种方法浅析JavaScript如何改变this指向(js改变this指向的方法)

admin230456年前0条评论

JavaScript怎样扭转this指向?下面本篇文章给人人介绍一下JS扭转this指向的三种方法,希望对于人人有所帮助!

三种方法浅析JavaScript如何改变this指向(js改变this指向的方法) 技术教程

一、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

二、扭转this指向

一、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

网友评论

扫一扫二维码添加客服微信

关于我们建站招商建站服务