首先,书中说:要模仿contains()方法则要关注掩码16,这个是因为contains()方法就是检测参考节点是否包含指定节点。而掩码16正是代表了节点的包含关系,因此要关注掩码16。问题:1.为何这里的说“对compareDocumentPosition()的结果执行按位与,以确定参考节点是否包含指定节点”?直接判断该方法返回的掩码数值不就OK了吗,为何要进行的这个按位与操作,也就是最下面的代码段:alert(!!(result &16))
1 回答
DIEA
TA贡献1820条经验 获得超2个赞
其实compareDocumentPostion()返回的是20。因为HTML是包含BODY并且BODY是在HTML的节点后,因此掩码的计算是:16+4=20。至于为什么要使用按位与来做判断其实是: 20 & 16 = 10100 & 10000=10000=16。所以使用按位与就可以判断得出掩码是16。目的就是为了排除其他掩码对16掩码的影响。仅此。
还有一点就是:既然是要检测是否是参考节点的后代,返回true时必定是等于20的。
因为“给定节点都被参考节点包含了,表明给定节点是参考节点的后代,此时掩码=16,并且给定节点必定是在参考节点后,此时掩码=4”。
最后就是,可以不用按位与操作,判定数值也可以,但判定的数值是==20,而不是单纯的16。
添加回答
举报
0/150
提交
取消