1.this1給元素的某個事件繫結方法,事件觸發,方法執行,此時方法中this都是當前元素本身
=
>dom0
btn.onclick = function anonymous()
;=>dom2
btn.
addeventlistener
('click'
, function anonymous()
,false);
btn.
attachevent
('onclick'
,function anonymous()
);
2.this2普通函式執行,它裡面的this是誰,取決於方法執行前面是否有「點」,有的話,「點」前面是誰this就是誰,沒有this指向windowvar a =10;
var obj=
}obj.fn(
);=>
20 obj.fn.
call()
;=>window 10
(obj.fn)()
;=>
20(obj.fn,obj.fn)()
;new
obj.fn()
; obt.
hasownproperty
('name'
) console.
log(obj.
hasownproperty
('name'))
;//=>hasownproperty方法中的this:obj true
console.
log(obj.__proto__.
hasownproperty
('name'))
;//=>hasownproperty方法中的this:obj.__proto__(object.prototype) false
console.
log(object.prototype.hasownproperty.
call
(obj,
'name'))
;//<=> obj.hasownproperty('name')
3.this3建構函式執行(new ***),函式中的this是當前類的例項function fn()
let f =
newfn;=
> 指向f fn
()的原型
4.this4箭頭函式沒有this,所有到的this1.他沒有prototype(也就是沒有構造器),所以不能被new執行
2.沒有arguments實參集合,可以基於...args剩餘運算子獲取
let obj =;}
};let ff = obj.fn(
);ff(
);
let obj =;}
};let ff = obj.fn(
);//=>fn()前面有. 所以this是objff(
);=> window //ff()前面啥也沒有所以是window
如果想要returnreturn function() ;中的this和外面的this一樣,可以:
1.建立乙個變數:
let obj =;}
};let ff = obj.fn(
);ff(
);2.換箭頭函式
let obj =;}
};let ff = obj.fn(
);ff(
);
定時器的特殊情況
let obj =
,1000);
//settimeout(function(), 1000);}}
;obj.fn(
);
* 第乙個引數就是改變的this指向,寫誰就是誰(特殊:非嚴格模式下,傳遞null/undefined指向的也是window)
* func.call([context],10,20)
* bind
JS中THIS的五種情況
一 事件繫結 this1 給元素的某個事件行為繫結方法,事件觸發,方法執行,此時方法中的this一般都是當前元素本身 在 中,有乙個button 點我一下 二 普通函式執行 this2 普通函式執行,它裡面的this是誰,取決於方法執行前面是否有 點,有的話,點 前面是誰this就是誰,沒有this...
五種情況會導致Session 丟失
1 session到期自定丟失。2 當修改web.config 系統會重啟 session 會丟失.3 bin目錄有變化時候系統會重啟 session會丟失 這裡變化指的是,建立新檔案 修改檔名 修改檔案內容 刪除檔案 修改目錄名 刪除目錄 唯獨建立新目錄時候部系統不會重啟,4 整個應用程式目錄都被...
工作或學習中經常遇到的五種阻塞情況
工作或學習中經常遇到的五種阻塞情況 1 提交執行時間長的查詢。長時間執行的查詢會阻塞其它查詢。例如,影響很多行的 delete 或 update 操作能獲取很多鎖,這些鎖不論是否公升級到表鎖都阻塞其它查詢。因此,一般不要將長時間執行的決策支援查詢和聯機事務處理 oltp 查詢混在一起。解決方案是想辦...