我遍歷他要干啥造虏?把兄弟姐妹和我自己分開唄梯醒。所以需要判斷allChildren是不是等于自己。不等于自己的就是兄弟姐妹唄迅耘,放到一個新數組里面所以需要先聲明一個新的偽數組贱枣。又由于用parentNode.children出來的是一個偽數組监署。數組是有l(wèi)ength有 __proto__:Array颤专,對象是沒有l(wèi)ength纽哥,沒有__proto__:Array。偽數組是有l(wèi)enght但是沒有__proto__:Array的對象栖秕。所以要申明的應該是對象春塌,并且給一個length。但是我要怎么把遍歷出來的放入偽數組呢簇捍?通過length從0開始增加只壳。反正隨著i增加就行了。最后的length = i - 1(當然這個不用寫出來)
等于和賦值暑塑,賦值的話只有一個=:被賦值 = 賦值吼句。等于的話隨便寫,一般不是判斷1的都是賦值事格。
return!!!
forEach就是拿來遍歷數組用的惕艳,那我就不用寫for(let i = 0; i < classes.length; i ++ )了。value指的是對象的value不是傳入啥驹愚,要傳入的參數是calsses远搪。
遍歷這東西用習慣了以后就不用去想原來了,當公式用了逢捺,直接遍歷谁鳍,遍歷的時候的操作就當做操作一個數組內容。只是實際上會操作所有內容而已劫瞳。
插入一個大疑問為什么遍歷這么重要倘潜,隨處可見的遍歷。
因為數組重要志于,生活中到處是數組涮因,起床刷牙要從一堆東西中拿出牙刷,穿衣服要重一堆中拿出一件恨憎,去看車也是去自己車位開車蕊退。路我也選了建設4路,停車憔恳,選早餐瓤荔,找位置。雖然不知道我大腦怎么處理這些東西的钥组,但是從代碼角度這些東西肯定是先存在數組里面我再挑選的输硝。所以生活到處是數組。同樣的前后端給數據也都是數組程梦。能用數組就用數組点把。像宏光說的除了0就是數組橘荠,數組這東西會經常用到,自己要聲明變量的時候第一時間就要想想可不可以數組郎逃。
兩個點:1.for (let key in object){? ?}是遍歷的公式远舅,其中變量key是自己聲明的,你換其他的也行锌妻。
2.要拿到value只能用object[key]楚里,不能用object.key。key這個變量你聲明了確實是有了优训,可以打印出來朵你。那為什么object.key不行呢?因為代碼會認為你是給object追加一對key:value揣非,這會有歧義抡医。所以總結下:要拿到object的value如果是拿1個可以用object.key和object[key],如果拿多個只能object[key]
本來if里面如果是true的話就執(zhí)行早敬。所以一般用===判斷是不是true忌傻。所以直接數組的key搞成true和false就很方便了哇
本來是用if else得到兩個結果,現在其實還是循環(huán)搁嗓。
解讀:classes[key]如果等于true那就把add賦值給methodName芯勘,然后item3.classList[methodName](key)
classes[key]如果等于false那就把remove賦值給methodName,然后item3.classList[methodName](key)
這里本來是classList.add現在變成classList[add]這樣可以嗎腺逛?當然可以了荷愕,不都是選中classList里面的add這個key嗎?
同理上面這個if也可以換成這個模式棍矛,這句話也太好用了吧
自己寫API會有缺點:
比如Number是一個函數安疗,如果我直接用了這個函數那么我就覆蓋了這個函數。同理我在寫getSibling或者addClasses的時候也可能覆蓋原有的函數够委。所以我最好寫一個自己的庫荐类,然后把函數都放到自己的庫里面。但是如果先寫API再寫庫還是可能會覆蓋的茁帽。所以在全局完全就不能用聲明具名函數的方法玉罐。不能function xxx (){} ,那得用什么方法潘拨?用給對象加屬性的方法吊输!
這就是命名空間啦
this
this就是函數體內用this,但是傳入參數可以不寫铁追,然后調用的時候寫季蚂。也就是說this就當普通變量用,只是寫函數的時候this不用傳入。引用的時候需要.call
另外之前item3.parentNode其實是等于item3.parentNode.call(item3)? ? a.forEach()等于a.forEach.call(a)
搜:方應杭:this的值到底是什么扭屁,一次說清楚
typeof不用加括號
閉包
用了函數外的一個變量算谈,兩者組成一個閉包。然后只要有人用這個節(jié)點就不會被當垃圾回收料滥,反正先知道這些吧然眼,深入的以后學到再說。
給數組里面加東西用push比用i更好幔欧。
總結一下jQuery:
首先接收一個node或者選擇器然后封裝成一個偽數組罪治,然后在偽數組上面加幾個API丽声,然后把偽數組送出去礁蔗。
用的時候:聲明一個變量等于jQuery后面跟一個選擇器。
所以node2其實就是一個哈希雁社,前面是屬性后面是方法浴井。jQuery就是一個函數這些總結要做好。
作業(yè)