Javascript 通过其构造函数属性访问DOM元素
是否有可能通过JavaScript通过自定义属性或直接通过其构造函数(最好是Javascript 通过其构造函数属性访问DOM元素,javascript,Javascript,是否有可能通过JavaScript通过自定义属性或直接通过其构造函数(最好是HTMLElement)访问DOM元素 类似下面的代码: /* Some Attribute document.body.someAttribute == document.body (this should be true) */ HTMLElement.prototype.someAttribute = (function() { /* Return the
HTMLElement
)访问DOM元素
类似下面的代码:
/* Some Attribute
document.body.someAttribute == document.body
(this should be true)
*/
HTMLElement.prototype.someAttribute = (function() {
/* Return the element. */
})();
编辑 显然这就是我要问的:
Object.defineProperty(HTMLElement.prototype, "someAttribute", {
get: function someAttribute() { return this }
});
document.body.someAttribute === document.body // -> true
你的问题很不清楚。您的标题是“访问”,但您给出的第一个示例似乎是“测试”
document.body
是HTMLBodyElement
的一个实例,因此它是其构造函数document.body.constructor
的值,因此
document.body.constructor === HTMLBodyElement
及
当然还有
document.body instanceof HTMLElement
因为HTMLBodyElement
是HTMLElement
的一个子类
无法从构造函数获取实例;没有构造器知道可能用它创建了什么实例。要查找特定HTML元素类型的实例,请使用
document.querySelector[All](标记名)
不确定该用例,但以下是如何选择DOM元素。“通过其构造函数访问DOM元素”您想用它做什么?从我的角度来看,如果没有DOM元素,您将无法访问此方法,因此提供一种从元素自身获取自身的方法似乎是多余的,除非您尝试访问元素的属性,在这种情况下,可能与相同,但很难说……我不知道为什么会关闭它。目前还不清楚他们在问什么。很明显,他们感到困惑。很明显,标题可以改为“如何将方法/属性添加到DOM元素的构造函数中,以便该方法可以访问DOM元素”。。。这就是为什么初学者不能在这里提问的原因。如果这个人有足够的信息来正确地提问,他们一开始就不会有问题。答案是这样的,因为问题是封闭的:HTMLElement.prototype.myMethod=function(){console.log(“this element”,this)}然后:let element=document.getElementById('my-element')。然后:element.myMethod()。。。。控制台将记录您的元素,或者在方法中执行任何您想执行的操作。谢谢,我想我只是想知道是否有可能从实例中获取构造函数
。我在上面的评论中进一步澄清了我的回答:您不想获取构造函数本身,而是想获取构造函数的方法,存储在构造函数的.prototype对象上。如果将方法添加到HtmleElement.prototype.myMethod=function(){}。。。然后,像这样调用它。myMethod()
document.body instanceof HTMLElement