封裝一個(gè)函數(shù):
傳入value 返回一個(gè)你想得到的值或者對(duì)象
第二部: 聲明一個(gè)類似Node的對(duì)象 把函數(shù)當(dāng)做屬性放入到這個(gè)對(duì)象中
然后通過(guò) ffdom.getSiblings() ffdom.addClass() 調(diào)用函數(shù)
那這些函數(shù)放到一個(gè)對(duì)象里 然后通過(guò)想調(diào)用屬性的方式來(lái)調(diào)用這些函數(shù)給這個(gè)對(duì)象取個(gè)名字 就叫做命名空間
在這個(gè)方法中 你需要先聲明 兩個(gè)全局對(duì)象(函數(shù)) 這就很容易導(dǎo)致你一不小心就把別人聲明的對(duì)象覆蓋了
這時(shí)需要下面變形 先聲明一個(gè)全局對(duì)象 然后通過(guò) obj.xxx的方式 寫入屬性再讓這個(gè)屬性 等于一個(gè)函數(shù)( function(){})這樣 這兩個(gè)函數(shù)就只是你聲明的全局對(duì)象里面的兩個(gè)屬性
同樣的 我們能不能把這些方法加入到Node原型鏈中呢 看下面這種變形
給Node的公有屬性添加一個(gè)方法 任何node都可以通過(guò)這個(gè)方法訪問(wèn)這個(gè)函數(shù)
那么問(wèn)題來(lái)了 我們?cè)趺醋尯瘮?shù) 獲取到我們這個(gè)節(jié)點(diǎn)呢 用this
item.getSiblings() 等價(jià)于item.getSiblings.call(item)這里的this 就是綁定這個(gè)方法的節(jié)點(diǎn)對(duì)象
這樣又出現(xiàn)了一個(gè)老問(wèn)題了 萬(wàn)一你把 Node里的函數(shù)覆蓋了呢 我們可以通過(guò)下面方法解決
創(chuàng)造一個(gè)node2 然后調(diào)用Node
實(shí)現(xiàn) getSiblings
上面的代碼 我們只能操作一個(gè)節(jié)點(diǎn) 如果我要要操作多個(gè)節(jié)點(diǎn)呢看下面代碼
思路 :判斷傳入的節(jié)點(diǎn) 到底是一個(gè)還是多個(gè) 不管是什么樣的 我們都把傳入的節(jié)點(diǎn) 放入已經(jīng)聲明好的空對(duì)象中 如果是多個(gè)節(jié)點(diǎn)那么 他本身就是個(gè)偽數(shù)組 但是為了確保數(shù)組的純凈性我們需要遍歷節(jié)點(diǎn)數(shù)組把每一項(xiàng)拿出來(lái)放入我們的數(shù)組中然后我們?cè)賹懸粋€(gè)函數(shù) 同樣放入到數(shù)組中