11

プロパティとメソッドのセマンティックの違いに関する優れた説明を見つけました (言い換えると、http://www.webdeveloper.com/forum/showthread.php?133712-Properties-Vs.-Methodsを介して):

プロパティは名詞のようなものです。それらには値または状態があります。

メソッドは動詞のようなものです。アクションを実行します。

プロパティはアクションを実行できず、メソッドが持つ唯一の値は、アクションの実行が終了した後に返される値です。

例えば

プロパティ: ドア; 可能な値: オープン、クローズ

メソッド: openDoor; アクション: ドア プロパティの値を「open」に変更します。

例を作成する:理論的には理解できますが、例を思いつくことができません。ドア/openDoor が実際の Javascript コードでどのように見えるかを教えていただけないでしょうか?

4

3 に答える 3

20

本当に、上記のリンクのいくつかをバックアップして読む必要があります. しかし、簡単な例として:

var house = {} ;

house.isDoorOpen = false ;

house.openDoor = function(){
    house.isDoorOpen = true ;
}

これhouseがオブジェクトです。プロパティがあります: house.isDoorOpen. ここでは、形容詞に似ています。ドアが開いている (true) または閉じている (false)。それが聞こえるように、それは家の特性を説明しています。

また、メソッドがありますopenDoor(これは次のように使用されます: house.openDoor())。それはそれができることです。この場合、アクションはプロパティにopenDoor影響を与え、 true にします。isDoorOpen

于 2013-02-19T09:00:59.547 に答える
2

JavaScript仕様ECMA-262がプロパティという用語をどのように説明しているかを見てみましょう

http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.26

4.3.26 プロパティ

オブジェクトの一部である名前と値の間の関連付け

注 プロパティの形式に応じて、値はデータ値 (プリミティブ値、オブジェクト、または関数オブジェクト) として直接表現されるか、アクセサ関数のペアによって間接的に表現されます。

4.3.27 メソッド

プロパティの値である関数

注 関数がオブジェクトのメソッドとして呼び出されると、オブジェクトはその this 値として関数に渡されます。

また

Javascript の属性の定義は Java のものとは異なります

4.3.29 属性

プロパティの特性を定義する内部値


for in、オブジェクトの列挙可能なプロパティをループし、その関数を含みます

http://eloquentjavascript.net/1st_edition/chapter8.html

「関数は、プロパティとして検索されるとメソッドとして呼び出され、object.method() のようにすぐに呼び出されます。」

プロパティのより標準的な定義があるようです..

https://en.wikipedia.org/wiki/Property_(プログラミング)#JavaScript

「一部のオブジェクト指向プログラミング言語では、プロパティは特別な種類のクラス メンバーであり、フィールド (またはデータ メンバー) とメソッドの中間に位置します。..Java などの一部のオブジェクト指向言語では、そうではありません。プロパティをサポートし、代わりにアクセサー メソッドとミューテーター メソッドのペアをプログラマーが定義する必要があります。」

プロパティのより標準的な非 JavaScript 定義では、

C# にはプロパティがあり、Java にはプロパティがありません

于 2015-08-17T19:01:48.423 に答える