hasAttribute与hasOwnProperty区别

9

我遇到了一些jQuery代码,试图使用hasOwnProperty访问HTML属性。

<input type="text" name="fname" placeholder="First name">

<script>
    var e = $element.find('input')[0];
    if(!e.hasOwnProperty("placeholder")){...}
</script>

据我理解,这应该始终如一。
if(!e.hasAttribute("placeholder")){...}

但是hasAttribute和hasOwnProperty之间有什么区别呢?它们有时候是等效的吗?

1
当属性被属性镜像时,它们是等效的,就像一些HTML属性一样。 - adeneo
2个回答

15

hasAttribute()

hasAttribute() 仅适用于HTML元素,并返回true,如果该元素具有与给定参数相同的属性名称。

<div class="myClass"></div>

<script>
    document.querySelector('div').hasAttribute('class'); //true
    document.querySelector('div').hasOwnProperty('class'); //false
</script>

hasOwnProperty()

hasOwnProperty() 只适用于 JavaScript 对象,并且如果该对象具有与给定参数相同名称的属性,则返回 true。

var obj = {
    myProp: "my attribute"
}

obj.hasOwnProperty("myProp") //true
obj.hasAttribute("myProp") //false

有些HTML元素可以在JavaScript中构建,这就是为什么hasOwnProperty有时对它起作用,但是hasAttribute在JavaScript对象中永远不起作用。


那么 hasOwnProperty() 在 HTML 元素中也可以使用,对吗? - Irvan Hilmi

-1

HTML:

<span medium-img>Whatever</span>

Javascript:

alert($('span').is('[medium-img]')); // Alerts true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接