其他分享
首页 > 其他分享> > 3个点让你彻底搞懂this

3个点让你彻底搞懂this

作者:互联网

很多同学搞不清楚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