ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3个点让你彻底搞懂this

2021-08-04 13:00:49  阅读:134  来源: 互联网

标签:个点 彻底 对象 绑定 js 参数 搞懂 强制 函数


很多同学搞不清楚js里面的this 到底是谁?搞不清楚this到底如何使用呢?,今天给大家总结了this的用法。

1: this机制

Js 进入函数里面可以访问一个特殊的”参数”叫做this。和很多高级语言(java, c#, c++)的this是不一样的,js的this 是你传什么,就是什么,其它高级语言的this, 是当前类的实例, 但是js是不一样的, js 的this更像一个参数,你传什么,它就是什么。

2: this使用原则

由上面,得到一个原则, 可以在函数里面使用this, 但在使用之前必须要知道当前this是哪个对象, 如果不清楚,千万别使用。

3: 如何搞清楚this是谁?

在函数里面使用this, 是在函数调用的时候传递的, 调用函数的时候传递this有三种方式:

(1)显示的传递:

Function a (参数1, 参数2) {… …};

a.call(“函数this对象”, 参数1, 参数2), 进入a函数后,使用this, 那么this就是外面传递的对象, 例如a.call(“hello”, 参数1, 参数2); 进入a函数后,this指的是“hello”这个字符串对象。a.call({uname: “blake”}, 参数1,参数2); 进入a函数后, this指的是 {uname: “blake”}对象实例;

(2)隐式传递this:

先回忆一下表({key: value})访问数据成员, 表.成员名字,这个成员可以是函数对象,所以调用的时候, 表.函数成员名字(参数1, 参数2), 那么使用这种方式的时候, 进入函数对象里面, 在函数里面使用 this 指的就是外面的这个表实例;

(3) 强制绑定this与强制绑定的陷阱

强制绑定是对一个函数对象强制的绑定好this对象, 这样在函数里面使用this就是你绑定的对象,

例如var a = function(参数1, 参数2) {}.bind(“hello”);

a(参数1, 参数2); 进入到function后this 指的是强制绑定的”hello”, 强制绑定具备有最高的优先级,有强制绑定,this以强制绑定的为主,强制绑定 >= 显示/隐式。强制绑定有一个被90%的人忽略的事实,那就是:

var a = function() {… …};

var b = a.bind(“对象”);

请问, a与b 是同一个函数对象么?有兴趣的同学自己验证一下。^_^

标签:个点,彻底,对象,绑定,js,参数,搞懂,强制,函数
来源: https://www.cnblogs.com/bycw/p/15098363.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有