什么叫属性法容易被攻破,用功能法?

来源:4-3 如何判断节点是html和xml元素节点

凉鹜

2017-12-07 19:13

请大神们解释下

写回答 关注

2回答

  • 慕移动9181930
    2022-03-24 01:46:01
  • qq_杀意隆_0
    2017-12-08 08:56:12

    视频里说的很清楚了。

    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不具备这些功能)。这就是功能法

    qq_杀意隆... 回复凉鹜

    具体再看看教程。回答满意的话请采纳一下

    2017-12-11 08:43:42

    共 2 条回复 >

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98374 学习 · 238 问题

查看课程

相似问题