内部會調用toString方法,将設置的對象轉換為字符串添加給相應的屬性;
這個問題呢,是通過jQuery的each方法中,回調函數的this指向問題而來;
我們知道,回調函數中的this如果指向的是基本數據類型,那麼系統會自動将這個基本數據類型的值包裝為對應的對象類型;
就比如:
數組裡面存的是string類型的值,然後jq實例調用each方法,打印的this如下圖所示:
this指向的基本數據類型的值被轉換為了String類型;
但是這裡說的不是這個問題,而是和這個問題類似,我們在給DOM元素設置屬性值的時候,如果設置的是對象呢?
獲取頁面中的span,然後給兩個span分别設置屬性‘a’,屬性值為兩個對象:
第一個屬性值:内部調用toString方法将{a : 'a',b : 'b'}對象轉換為字符串設置;
第二個屬性值:同理,也是調用toString方法将String對象的實例轉換為字符串設置;
那麼,我們在回到jQuery中,
如果用each方法給DOM添加屬性值;
推薦下我的前端群:524262608,不管你是小白還是大牛,小編我都歡迎,不定期分享幹貨,包括我自己整理的一份前端資料和零基礎入門教程,歡迎初學者和在進階中的小夥伴。
jQuery中的each方法的回調函數中的this,如果指向的是字符串類型的數據,那麼在回調函數中操作this給元素添加屬性值,是沒有問題的,因為this即使被轉換為了相應的對象類型數據,那麼再給DOM元素添加的時候,内部會調用toString方法在對象類型的數據轉換為字符串添加,就相當于‘又折騰回來了’;
那麼,如果this指向的不是字符串類型數據,那麼就操作參數吧~
關注‘學習web前端’,每天幹貨分享,關注後回複‘學習web前端’領取視頻學習資料
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!