web-dev-qa-db-ja.com

属性とプロパティの違いは何ですか?

これらは同じことを意味するようです。しかし、どの文脈でどの用語がより適切ですか?

147
caustic

一般的な用語(および通常の英語の使用法)では、用語は同じことを意味します。

HTML/Javascriptの特定のコンテキストでは、DOM要素のHTML表現にattributes(タグ内に含まれるキー/値ペアのXMLで使用される用語)があるため、用語は混乱しますが、 JavaScriptオブジェクトとして表され、これらの属性はオブジェクトプロパティとして表示されます。

さらに物事を混乱させるために、プロパティを変更すると、通常、属性が更新されます。

たとえば、element.hrefプロパティを変更すると、要素のhrefattributeが更新され、element.getAttribute('href')の呼び出しに反映されます。

ただし、後でreadそのプロパティを使用すると、attributeが相対URLであっても、絶対URLに正規化されます。

185
Alnitak

これらの言葉は、コンピューターサイエンスが登場する前から存在していました。

  1. 属性はwe attribute誰かまたは何かに対する品質またはオブジェクトです。たとえば、セプターは権力と国家の属性です。

  2. プロパティは、帰属表示なしで存在するの品質です。たとえば、粘土には粘着性があります。または、金属の特性の1つは導電率です。プロパティは、物理的現象を通して自分自身を実証しますが、プロパティは誰かや何かに起因する必要はありません。同様に、誰かが男性的な属性を持っていると言うことは自明です。実際には、プロパティは誰かまたは何かによって所有されていると言うことができます。

公平を期すために、コンピューターサイエンスでは、これらの2つの単語は、少なくとも大部分は同じ意味で使用できますが、プログラマーは通常、英文学の学位を取得せず、文法の本を書いたり気にしたりしません。

63
George

多くの場合、メカニズムまたは実際のことを記述するためにattributeが使用されます。

プロパティは、モデルの説明に使用されます。

たとえば、(机の上にある)ドキュメントには、ドラフトという属性がある場合があります。

ドキュメントをモデル化するクラスには、ドラフトかどうかを示すプロパティがあります。この場合、プロパティは状態をキャプチャします。

18

これらの用語の正確な意味は、あなたが話している言語/システム/宇宙に大きく依存します。

HTML/XMLでは、属性は等号と値を持つタグの一部であり、たとえばプロパティは何も意味しません。

そのため、あなたが議論しているドメインに関する詳細情報が必要です。

16
Ned Batchelder

属性は、HTMLタグ内で実際に使用するものです。

<input type="checkbox" checked="checked" />

このインスタンスタイプでは、属性がチェックされています。ただし、プロパティはこれらの属性の値であり、ブラウザはDOM要素内に保存します。多くの場合、属性とプロパティの値は等しいため、混乱を招きます。

この例では、DOM要素inputには、プロパティtypeに値"checkbox"が、プロパティcheckedに値trueがあります(この値の違いに注意してください) HTML属性内の値)。

Firebugを使用すると、要素をクリックして「DOMビュー」を選択したときのプロパティの動作を観察できます。

13
smonusbonus

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は、実装方法を技術的に区別します。

5
S.Lott

Java(または他の言語)では、プロパティ/属性の使用は使用法に依存します。

  • 値があまり頻繁に変更されない場合に使用されるプロパティ(通常は起動時または環境変数に使用)

  • 属性は、要素(オブジェクト)の値(オブジェクトの子)であり、非常に頻繁/常に変化し、永続的であるかどうか

2
eric

HTMLでは、属性はDOMツリーに固有であるように見えますが、プロパティはDOM要素の特性を記述するために使用されます

1
goonerify
<property attribute="attributeValue">proopertyValue</property>

それを見る一つの方法でしょう。

C#で

[Attribute]
public class Entity
{
    private int Property{get; set;};
1
dove

属性とプロパティの違いは何ですか?
機能と機能の違いは何ですか? CharacteristicとCharacterの違いは何ですか? ActとBehaviorの違いは何ですか?

コンテキストの変更だけです。

オブジェクト、製品、パーソナリティ、人

人は行動で行動します。パーソナリティには、特定のキャラクターの特性があります。製品には機能性を引き出す機能があります。オブジェクトには、プロパティを与える属性がありました。

0
Generic

Delphiはプロパティを使用し、.NETに移行しました(同じアーキテクトがいるため)。

Delphiでは、統合プロパティエディタを使用してデザインタイムでプロパティを設定できるように、ランタイムタイプ情報と組み合わせて使用​​されることがよくあります。

プロパティは常にフィールドに関連するとは限りません。それらは、副作用がある可能性のある関数になる可能性があります(もちろん、それは非常に悪い設計です)。

0
Toon Krijthe