4. 事件绑定中的this
事件处理函数中的this,无论是绑定的是命名函数还是匿名函数,都可以认为是元素引用的一个方法,虽然这种函数的调用具有其隐蔽性,但是我们还是应该视为其执行环境是元素引用,所以this指向触发事件(调用方法)的元素。而addEventListener 方法中的事件函数默认是作为调用addEventListener对象的方法,所以同样触发事件的元素。
- oBox.onclick = function(){
- console.log(this);
- }
- // oBox.onclick();
- oBox.addEventListener("click",function(){
- console.log(this)
- });
5. 闭包中的函数
在上述案例中,我们虽然是通过调用obj对象的foo方法获取了匿名函数,但是由于匿名函数的执行具有的全局性,而这时并没有出现实际的其他调用者,所以函数内的this指向全局对象window。当然这只是一个常见的案例,this的指向具体情况还是要结合实际调用者具体分析。
- var obj = {
- foo:function(){
- return function(){
- console.log(this);
- }
- }
- }
- obj.foo()();
6. new 操作符调用函数
new 操作符调用函数内的this是一个恒定值,指向的是函数执行前创建的对象。
- function CreateStu(){
- console.log(this);
- }
- new CreateStu();
7. 其他的this
call和apply方法(作用相同,参数不同)都可以强制改变this的指向,可以将函数执行时的this指向方法的第一个参数。
- var obj1 = {
- foo:function(){
- console.log(this);
- }
- }
- var obj2 = {}
- obj1.foo.call(obj2);
>>本文地址:https://www.ujiuye.com/zhuanye/2020/48500.html
声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。
1 您的年龄
2 您的学历
3 您更想做哪个方向的工作?