注意:这仅用于学习目的..
console.log(this);
document.getElementById = function(){
alert('testing');
}
document.getElementById('someID');
我上面写了一段javascript代码。当我加载页面时,它会显示一个警告框,上面写着“测试”。
所以我猜getElementById
是document
对象的一种方法,我已将其覆盖为alert('testing')
,这就是为什么它在页面加载时向我显示警告框的原因。
如果该部分是正确的,那么当我展开下面的getElementById
对象时,我不应该看到document
吗?我在错误的地方找东西吗?
答案 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()
对象会好得多。