方法document.getElementById在哪里定义?

时间:2017-09-28 21:18:13

标签: javascript html

注意:这仅用于学习目的..

console.log(this);
document.getElementById = function(){
    alert('testing');
}

document.getElementById('someID');

我上面写了一段javascript代码。当我加载页面时,它会显示一个警告框,上面写着“测试”。

所以我猜getElementByIddocument对象的一种方法,我已将其覆盖为alert('testing'),这就是为什么它在页面加载时向我显示警告框的原因。

如果该部分是正确的,那么当我展开下面的getElementById对象时,我不应该看到document吗?我在错误的地方找东西吗?

enter image description here

2 个答案:

答案 0 :(得分:6)

你的方法在那里。只是Chrome决定不向您展示。

然而,你是否应该这样做是另一个问题。

答案 1 :(得分:4)

您正在做的是使用您自己的实现覆盖document.getElementById()函数。记录器不会显示,元素的所有属性。将它分配给一个新对象可以解决问题:

document
document.getElementById = function() {
  console.log('test');
}

var doc = Object.assign({}, document);
console.log(doc);
console.log(doc.getElementById);

重要提示

我强烈建议您不要将.as-console-wrapper { max-height: 100% !important; }功能替换为您自己的功能,因为它可能会导致各种麻烦。用自定义函数扩展getElementById()对象会好得多。