Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过其构造函数属性访问DOM元素_Javascript - Fatal编程技术网

Javascript 通过其构造函数属性访问DOM元素

Javascript 通过其构造函数属性访问DOM元素,javascript,Javascript,是否有可能通过JavaScript通过自定义属性或直接通过其构造函数(最好是HTMLElement)访问DOM元素 类似下面的代码: /* Some Attribute document.body.someAttribute == document.body (this should be true) */ HTMLElement.prototype.someAttribute = (function() { /* Return the

是否有可能通过JavaScript通过自定义属性或直接通过其构造函数(最好是
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