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);
>>本文地址:http://www.jecan.cn/zhuanye/2020/48500.html
聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?