什么叫属性法容易被攻破,用功能法?
请大神们解释下
请大神们解释下
2017-12-07
视频里说的很清楚了。
dom元素节点具有nodeType属性,属性法仅仅是判断一个对象的nodeType是否为1;
但是可以自己创建这样1个对象:
var obj={nodetype:1}
这个对象并不是dom对象,但是用属性法判断
function isElement(ele){ return ele&&ele.nodeType===1; } isElement(obj);//这样也会返回true,但是obj并不是dom节点。
上面就是属性法判断的不足之处,如果用功能法:
function isElement(ele){ try{ var div=document.createElement('div'); div.appendChild(ele);//把ele做为子节点添加到div里 div.removeChild(ele);//把ele从div里移除 }catch(e){ return false; } } var obj={nodetype:1} isElement(obj)//返回false
由于obj不是dom对象,所以它不能添加到div里或从div里移除(obj不具备这些功能)。这就是功能法
举报