我在想HTML元素的textContent属性是否是一个getter,它会递归地搜索节点以查找文本节点。
我做了一个实验:
我做了一个实验:
Object.defineProperty(HTMLElement.prototype, 'textContentMyOwnImplementation', {
get() {
const result = [];
function search(node) {
if(node.nodeName == '#text')
result.push(node.data);
else
for(let i = 0; i < node.childNodes.length; i++) {
search(node.childNodes[i]);
}
}
search(this);
return result.join(' ');
}
})
结果与textContent相同。
这让我想到了一个问题。有没有办法确定一个属性是访问器还是不是访问器?
textContent
存在于Node.prototype
上,因此您需要执行以下操作:Object.getOwnPropertyDescriptor(Node.prototype,'textContent')
。 - ansavchenco