これらは同じことを意味するようです。しかし、どの文脈でどの用語がより適切ですか?
一般的な用語(および通常の英語の使用法)では、用語は同じことを意味します。
HTML/Javascriptの特定のコンテキストでは、DOM要素のHTML表現にattributes(タグ内に含まれるキー/値ペアのXMLで使用される用語)があるため、用語は混乱しますが、 JavaScriptオブジェクトとして表され、これらの属性はオブジェクトプロパティとして表示されます。
さらに物事を混乱させるために、プロパティを変更すると、通常、属性が更新されます。
たとえば、element.href
プロパティを変更すると、要素のhref
attributeが更新され、element.getAttribute('href')
の呼び出しに反映されます。
ただし、後でreadそのプロパティを使用すると、attributeが相対URLであっても、絶対URLに正規化されます。
これらの言葉は、コンピューターサイエンスが登場する前から存在していました。
属性はwe attribute誰かまたは何かに対する品質またはオブジェクトです。たとえば、セプターは権力と国家の属性です。
プロパティは、帰属表示なしで存在するの品質です。たとえば、粘土には粘着性があります。または、金属の特性の1つは導電率です。プロパティは、物理的現象を通して自分自身を実証しますが、プロパティは誰かや何かに起因する必要はありません。同様に、誰かが男性的な属性を持っていると言うことは自明です。実際には、プロパティは誰かまたは何かによって所有されていると言うことができます。
公平を期すために、コンピューターサイエンスでは、これらの2つの単語は、少なくとも大部分は同じ意味で使用できますが、プログラマーは通常、英文学の学位を取得せず、文法の本を書いたり気にしたりしません。
多くの場合、メカニズムまたは実際のことを記述するためにattributeが使用されます。
プロパティは、モデルの説明に使用されます。
たとえば、(机の上にある)ドキュメントには、ドラフトという属性がある場合があります。
ドキュメントをモデル化するクラスには、ドラフトかどうかを示すプロパティがあります。この場合、プロパティは状態をキャプチャします。
これらの用語の正確な意味は、あなたが話している言語/システム/宇宙に大きく依存します。
HTML/XMLでは、属性は等号と値を持つタグの一部であり、たとえばプロパティは何も意味しません。
そのため、あなたが議論しているドメインに関する詳細情報が必要です。
属性は、HTMLタグ内で実際に使用するものです。
<input type="checkbox" checked="checked" />
このインスタンスタイプでは、属性がチェックされています。ただし、プロパティはこれらの属性の値であり、ブラウザはDOM要素内に保存します。多くの場合、属性とプロパティの値は等しいため、混乱を招きます。
この例では、DOM要素input
には、プロパティtype
に値"checkbox"
が、プロパティchecked
に値true
があります(この値の違いに注意してください) HTML属性内の値)。
Firebugを使用すると、要素をクリックして「DOMビュー」を選択したときのプロパティの動作を観察できます。
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 )
プロパティは、setter、getter(およびdeleter)関数のコレクションをラップする単一の属性のような名前です。
通常、属性は別のオブジェクト内の単一のオブジェクトです。
ただし、Pythonは__getattr__
などのメソッドを提供します。これにより、「属性」の定義を拡張できます。
ボトムライン-彼らはほぼ同義です。 Pythonは、実装方法を技術的に区別します。
Java(または他の言語)では、プロパティ/属性の使用は使用法に依存します。
値があまり頻繁に変更されない場合に使用されるプロパティ(通常は起動時または環境変数に使用)
属性は、要素(オブジェクト)の値(オブジェクトの子)であり、非常に頻繁/常に変化し、永続的であるかどうか
HTMLでは、属性はDOMツリーに固有であるように見えますが、プロパティはDOM要素の特性を記述するために使用されます
<property attribute="attributeValue">proopertyValue</property>
それを見る一つの方法でしょう。
C#で
[Attribute]
public class Entity
{
private int Property{get; set;};
属性とプロパティの違いは何ですか?
機能と機能の違いは何ですか? CharacteristicとCharacterの違いは何ですか? ActとBehaviorの違いは何ですか?
コンテキストの変更だけです。
オブジェクト、製品、パーソナリティ、人
人は行動で行動します。パーソナリティには、特定のキャラクターの特性があります。製品には機能性を引き出す機能があります。オブジェクトには、プロパティを与える属性がありました。
Delphiはプロパティを使用し、.NETに移行しました(同じアーキテクトがいるため)。
Delphiでは、統合プロパティエディタを使用してデザインタイムでプロパティを設定できるように、ランタイムタイプ情報と組み合わせて使用されることがよくあります。
プロパティは常にフィールドに関連するとは限りません。それらは、副作用がある可能性のある関数になる可能性があります(もちろん、それは非常に悪い設計です)。