Celles-ci semblent vouloir dire la même chose. Mais quel terme est plus approprié dans quel contexte?
En termes généraux (et en anglais habituel), les termes signifient la même chose.
Dans le contexte spécifique de HTML/Javascript, les termes sont confondus car la représentation HTML d'un élément DOM comporte des attributs (terme utilisé dans XML pour le paires clé/valeur contenues dans une balise), mais lorsqu'ils sont représentés en tant qu’objet JavaScript, ces attributs apparaissent en tant que propriétés d’objet .
Pour compliquer encore les choses, les modifications apportées aux propriétés mettront généralement à jour les attributs.
Par exemple, modifier la propriété _element.href
_ mettra à jour l'attribut href
sur l'élément, et cela sera reflété dans un appel à element.getAttribute('href')
.
Cependant, si par la suite lisiez cette propriété, elle aurait été normalisée en une URL absolue, même si l'attribut pourrait être une URL relative!
Ces mots existaient bien avant l'informatique.
L'attribut est une qualité ou un objet qui nous attribuons à quelqu'un ou quelque chose. Par exemple, le sceptre est un attribut du pouvoir et de l’état.
La propriété est une qualité qui existe sans aucune attribution. Par exemple, l'argile a des qualités adhésives; ou l'une des propriétés des métaux est la conductivité électrique. Les propriétés se manifestent par des phénomènes physiques sans qu'il soit nécessaire de les attribuer à quelqu'un ou à quelque chose. De même, dire que quelqu'un a des attributs masculins va de soi. En effet, vous pourriez dire qu'une propriété appartient à quelqu'un ou à quelque chose.
Pour être juste, en informatique, ces deux mots, du moins dans l’ensemble, peuvent être utilisés indifféremment - mais là encore, les programmeurs ne possèdent généralement pas de diplôme en littérature anglaise et ne s’intéressent pas beaucoup à la grammaire :).
Souvent, un attribut est utilisé pour décrire le mécanisme ou la réalité.
Un propriété est utilisé pour décrire le modèle.
Par exemple, un document (assis sur votre bureau) peut avoir l’attribut qu’il s’agit d’un brouillon.
La classe qui modélise les documents a une propriété pour indiquer s'il s'agit ou non d'un brouillon. Dans ce cas, la propriété capture l'état.
La signification précise de ces termes dépendra beaucoup de la langue/du système/de l'univers dont vous parlez.
En HTML/XML, un attribut est la partie d'une balise avec un signe égal et une valeur, et la propriété ne veut rien dire, par exemple.
Nous avons donc besoin de plus d'informations sur le domaine dont vous parlez.
Un attribut est ce que vous utilisez réellement dans votre balise HTML, comme
<input type="checkbox" checked="checked" />
Dans cette instance, le type et vérifié sont des attributs. La propriété est cependant la valeur de ces attributs, que le navigateur enregistre dans l'élément DOM. Souvent, la valeur des attributs et des propriétés sont égales, c’est ce qui le rend si confus.
Dans cet exemple, l'élément DOM input
a la propriété type
avec la valeur "checkbox"
et la propriété checked
avec la valeur true
(remarquez en quoi cette valeur diffère de la valeur contenue dans l'attribut HTML).
En utilisant Firebug, vous pouvez observer le comportement des propriétés en cliquant sur un élément et en sélectionnant la "vue DOM".
En Python ...
class X( object ):
def __init__( self ):
self.attribute
def getAttr( self ):
return self.attribute
def setAttr( self, value ):
self.attribute= value
property_name= property( getAttr, setAttr )
Une propriété est un nom unique semblable à un attribut qui enveloppe une collection de fonctions setter, getter (et deleter).
Un attribut est généralement un objet unique dans un autre objet.
Ceci dit, Python vous donne des méthodes comme __getattr__
qui vous permet d’élargir la définition de "attribut".
Bottom Line - ils sont presque synonymes. Python établit une distinction technique dans la façon dont ils sont implémentés.
Dans Java (ou d'autres langues), l'utilisation de la propriété/de l'attribut dépend de l'utilisation:
Propriété utilisée lorsque la valeur ne change pas très souvent (généralement utilisée au démarrage ou pour une variable d'environnement)
Attributs est une valeur (objet enfant) d'un élément (objet) qui peut changer très souvent/tout le temps et être ou non persistante
En HTML, il semble que les attributs soient spécifiques à l’arbre DOM, alors que les propriétés sont utilisées pour décrire les caractéristiques des éléments DOM
<property attribute="attributeValue">proopertyValue</property>
serait une façon de voir les choses.
En C #
[Attribute]
public class Entity
{
private int Property{get; set;};
Quelle est la différence entre Attribute et Property?
Quelle est la différence entre Feature et Function? Quelle est la différence entre Characteristic et Character? Quelle est la difference entre Act et Behavior?
C'est juste un changement de contexte.
Objet, produit, personnalité, personne
Une personne agit dans un comportement. Une personnalité a les caractéristiques d'un personnage donné. Un produit a une fonctionnalité qui dérive une fonctionnalité. Un objet avait des attributs qui lui donnaient des propriétés.
Delphi a utilisé des propriétés et a trouvé son chemin dans .NET (car il a le même architecte).
Dans Delphi, ils sont souvent utilisés en combinaison avec des informations de type à l'exécution, de sorte que l'éditeur de propriétés intégré peut être utilisé pour définir la propriété dans designtime.
Les propriétés ne sont pas toujours liées aux champs. Ce peuvent être des fonctions qui peuvent avoir des effets secondaires (mais bien sûr, leur conception est très mauvaise).