ES6箭頭函數(shù)的坑

前幾天寫了一個(gè)頁面,在移動(dòng)端上顯示的,解構(gòu)也很簡單,html+css+jQuery,js寫法用的ES6(let,const,還有箭頭函數(shù)),內(nèi)容就是圖片+表格,一切都很順利,弄完了就沒什么事了。
然而,今天上午的時(shí)候,同事過來說,怎么安卓手機(jī)的瀏覽器打開這個(gè)頁面,點(diǎn)擊里面的按鈕都是沒反應(yīng)的呢?當(dāng)時(shí)還以為他是開玩笑或者是他自己手機(jī)問題,本著負(fù)責(zé)任的態(tài)度,拿著自己安卓機(jī)打開鏈接,試了一下,有問題,接著有用同事的蘋果機(jī)試了幾個(gè)瀏覽器,沒問題。好吧,開始塘坑。
正常的表格樣式是


image.png

但是當(dāng)時(shí)的樣式是


image.png

沒錯(cuò)單單樣式上看沒多大區(qū)別,就是三級(jí)聯(lián)動(dòng)的地址欄變空了,但這就是問題了,為什么會(huì)不顯示呢?而且點(diǎn)擊返回底部按鈕,商品數(shù)量加減按鈕,輸入框設(shè)置了失焦事件)等等,沒有任何效果。第一時(shí)間作出了一下判斷
1.手機(jī)瀏覽器兼容問題
2.JQuery版本問題

針對這兩個(gè)問題,立馬進(jìn)行驗(yàn)證。
驗(yàn)證1:
本人手機(jī)安裝的瀏覽器有UC,QQ,360(自帶的),為了測試又下載了百度瀏覽器,結(jié)果發(fā)現(xiàn)除了手機(jī)自帶的360瀏覽器使用正常外,其余瀏覽器均不正常。
然后呢,將jQuery操作的代碼

$('.add').click(function(){
    var a_num = Number($(this).siblings('input').val());
    var inventory = Number($(this).siblings('input').attr('data-q'));
    if(inventory <= a_num){
        popW('購買數(shù)量不能大于庫存');
        return;
    }
    a_num++
    var price = $(this).siblings('input').attr('data-price');
    var Total = price * a_num;
    $(this).parents().siblings().children('span[class=price]').html(Total+'.00');
    
    $(this).siblings('input').val(a_num);
})

改成了原生的JS

function addNum(){
  alert(1);
}

點(diǎn)擊,記過還是沒有效果

驗(yàn)證2:
原先引入的jQuery是3.1.1版本的,然后換了1.8.3的版本,不行,換了zepto.js,結(jié)果還是一樣。

那么這兩個(gè)方向就可以證實(shí)不是正確的了,但是基本可以確定,js沒效果。

接著上網(wǎng)google + 百度,找了一堆東西發(fā)現(xiàn)沒一個(gè)是有用的,包括問了一下圈里的朋友,都說沒遇到過,好吧,煩惱開始了,那么為什么會(huì)這樣呢?

上了個(gè)廁所回來,突然想到,會(huì)不會(huì)是瀏覽器需要設(shè)置開啟js腳本支持,接著又一通找瀏覽器里的設(shè)置,然并卵。

耐著性子繼續(xù)分析問題。既然頁面能夠顯示,那么說明html跟css沒有問題,dom節(jié)點(diǎn)操作沒有反應(yīng),那就是js的問題,那么是不是js引入不成功導(dǎo)致的呢?

接著直接在script下加了一個(gè)alert(1),顯示沒效果,那么好,基本就判斷是Js沒引入的問題。但是回頭一想,為什么360瀏覽器有效果呢?360瀏覽器有效果不就是說明js引入了,而且代碼沒有問題嗎?于是又推翻了這個(gè)想法。

那么會(huì)不會(huì)是js跟瀏覽器的兼容問題呢,就將ES6的寫法改成ES5的,一測試,可以了,好吧,自己坑自己了。

最后在查找原因的時(shí)候,發(fā)現(xiàn)是因?yàn)榧^函數(shù)里的this的問題。
在ES5中,函數(shù)作為對象的方法調(diào)用時(shí),this指向的是調(diào)用的對象;而在ES6的箭頭函數(shù)中,箭頭函數(shù)沒有自己的this, 它的this是繼承而來; 默認(rèn)指向在定義它時(shí),它所處的對象(宿主對象),而不是執(zhí)行時(shí)的對象, 如果沒有,就會(huì)一層層網(wǎng)上找,直到window。而在自己寫的箭頭函數(shù),this正好是指向widow的,導(dǎo)致獲取不到執(zhí)行時(shí)的對象,所以點(diǎn)擊沒有任何效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,808評論 1 19
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 115,508評論 24 450
  • 不掛科的大學(xué)是不完整的,掛科了的心情是悲痛難言的。 今天想著成績應(yīng)該都出來了,輸入賬號(hào)、密碼一查,懵逼了,居然有一...
    七點(diǎn)鐘姑娘閱讀 806評論 1 3
  • 早上,老公送孩子上學(xué)。飽飽地睡個(gè)懶覺。八點(diǎn)起床,開窗,陽光明媚。窗外的馬路上,車流穿梭,人們忙忙碌碌,一派歡樂。 ...
    尚妮妮閱讀 349評論 2 3
  • 月經(jīng)第一天,放假。 即使疼成這樣,下輩子還是要做女人!
    毛科科閱讀 185評論 0 0

友情鏈接更多精彩內(nèi)容