老师,以下是根据参照老师的代码,写的类
class List {
constructor(sel) {
this.el = Array.from(document.querySelectorAll(sel))
var self = this
this.el.forEach(item => {
item.addEventListener('click', function (element) {
if (element.target.className.indexOf('del') === 0) {
self.removeItem(element.target)
}
})
})
}
removeItem(target) {
var parent = this.el.filter(elem => {
return elem === target.parentNode
})[0]
if (parent) {
parent.removeChild(target)
}
}
}
老师,关于以上代码,有2个疑问。
第一,关于call的指向问题。
请问调用removeItem方法的使用,老师为何使用 self.removeItem.call(self, element.target)呢?不适用call指向,在removeItem方法里面,直接使用this.el也可以获取到,不是么?
第二,关于递归调用findParent的问题。
只是在ul上添加了click事件,判断点击的是否是.del元素后,在removeItem方法里面判断其父元素后,就可以删除了。觉得没必要一直向上寻找代理元素,有必要使用findParent递归么?