30秒到達(dá)戰(zhàn)場(chǎng)
2019-10-14 10:56:57
有沒有一種快速的方法來檢查對(duì)象是jQuery對(duì)象還是本機(jī)JavaScript對(duì)象?例:var o = {};var e = $('#element');function doStuff(o) { if (o.selector) { console.log('object is jQuery'); }}doStuff(o);doStuff(e);顯然,上面的代碼有效,但并不安全。您可能會(huì)向o對(duì)象添加選擇器鍵,并獲得相同的結(jié)果。有沒有更好的方法來確保該對(duì)象實(shí)際上是jQuery對(duì)象?符合 (typeof obj == 'jquery')
3 回答

四季花海
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用instanceof運(yùn)算符:
obj instanceof jQuery
說明:jQuery函數(shù)(又名$)被實(shí)現(xiàn)為構(gòu)造函數(shù)。構(gòu)造函數(shù)將以new前綴調(diào)用。
當(dāng)您調(diào)用時(shí)$(foo),內(nèi)部jQuery將此轉(zhuǎn)換為new jQuery(foo)1。JavaScript繼續(xù)this在構(gòu)造函數(shù)內(nèi)部進(jìn)行初始化,以指向的新實(shí)例jQuery,并將其屬性設(shè)置為在jQuery.prototype(aka jQuery.fn)上找到的屬性。因此,您得到的new對(duì)象instanceof jQuery是true。
1 實(shí)際上是new jQuery.prototype.init(foo):構(gòu)造函數(shù)邏輯已被卸載到另一個(gè)名為的構(gòu)造函數(shù)中init,但是概念是相同的。
添加回答
舉報(bào)
0/150
提交
取消