自定义指令中 v-clickoutside 里的奇怪写法
OuYangJinTing opened this issue · 4 comments
OuYangJinTing commented
Vue.directive('clickoutside', {
bind (el, binding, vnode) {
function documentHandler (e) {
if (el.contains(e.target)) {
return false;
}
if (binding.expression) {
binding.value(e);
}
}
el.__vueClickOutside__ = documentHandler;
document.addEventListener('click', documentHandler);
},
unbind (el, binding) {
document.removeEventListener('click', el.__vueClickOutside__);
// 下面这行代码是啥,调用 delete 方法吗?但为什么又不用括号呢?
delete el.__vueClickOutside__;
}
})
jhxxs commented
下面这段代码用来删除元素上挂载的__vueClickOutside__方法
OuYangJinTing commented
怎么写法这么奇怪
webiamcome commented
js删除对象属性的语法就是这样的,
delete object.property
delete object['property']
你可以去MDN查看delete操作符
OuYangJinTing commented
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete#Syntax
js 原来还有这语法,长见识了,不过这语法我喜欢,跟 ruby 一致