Water Sunlight

軽量プログラミングの文法 - JavaScript/Python

ユーザ用ツール

サイト用ツール


js:object:basic

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
js:object:basic [2021/05/24 13:03]
tanaka [特権メソッド]
js:object:basic [2021/07/19 10:58] (現在)
y2sunlight [静的プロパティと静的メソッド]
行 55: 行 55:
     suzuki.name = 'suzuki taro'; // プロパティの書き込み     suzuki.name = 'suzuki taro'; // プロパティの書き込み
     suzuki.greeting();           // メソッドの呼び出し     suzuki.greeting();           // メソッドの呼び出し
 +</sxh>
 +
 +=== メンバーの有無の判定(in演算子) ===
 +
 +in演算子を使って、メンバーの存在の有無を判定することができます。
 +
 +<sxh javascript;title:Example>
 +console.log('name' in suzuki);     // true
 +console.log('greeting' in suzuki); // true
 </sxh> </sxh>
  
行 94: 行 103:
 console.log(taro.getSchoolName()); // NG (taro.getSchoolName is not a function) console.log(taro.getSchoolName()); // NG (taro.getSchoolName is not a function)
 </sxh> </sxh>
-\\ 
  
 +=== メンバーの有無の判定(in演算子) ===
  
-===== プライベートメンバの定義 ===== +in演算子を使って、メンバ存在有無定することできます。
- +
-JavaScriptでは他オブジェクト指向言語と異なり、プライベートメンバを定する構文ありません。その代わりに[[js:function:closure|クロージャ]]を使用します。+
  
 <sxh javascript;title:Example> <sxh javascript;title:Example>
-function Circle(radius{+console.log('name' in taro);             // true 
 +console.log('greeting' in taro);         // true 
 +console.log('age' in taro);              // false 
 +console.log('getSchoolName' in taro);    // false
  
-  var _radius; +console.log('age' in Student);           // true 
-   +console.log('getSchoolName' in Student); // true
-  // プライベートメソッド(クロージャ) +
-  var _area = function() { +
-    return _radius * _radius * Math.PI; +
-  }; +
-   +
-  // パブリックメソッド +
-  this.setRadius = function(radius) { +
-    // プライベートプロパティに設定 +
-    _radius = radius +
-  }; +
-   +
-  // パブリックメソッド +
-  this.getRadius = function() { +
-    // プライベートプロパティから取得 +
-    return _radius;  +
-  }; +
-   +
-  // パブリックメソッド +
-  this.getArea = function() { +
-    // プライベートメソッドにアクセス +
-    return _area();  +
-  }; +
- +
-  this.setRadius(radius); +
-+
- +
-var a = new Circle(10); +
- +
-console.log(a.getRadius());  // 結果:10 +
-console.log(a.getArea());    // 結果:314.1592653589793+
 </sxh> </sxh>
-\\ 
- 
-==== 特権メソッド ==== 
- 
-特権メソッドとは、クラスのプライベートメンバにアクセスできるメソッドの事です。即ち、上例の ''setRadius'' や ''getRadius'' 等の様なクロージャの事です。特権メソッド自体はパブリックメンバやインスタンスからアクセス出来るので、プライベートメンバと外部との橋渡し的存在となります。 \\ 
-特権メソッドはアクセッサ―と呼ばれ、プライベートメンバを取得するゲッターメソッド、プライベートメンバを設定するセッターメソッドに分類されます。 
- 
-<code javascript> 
-getRadius ・・・ ゲッターメソッド 
-setRadius ・・・ セッターメソッド  
-</code> 
  
 \\ \\
- 
-===== Object.defineProperty ===== 
- 
-上例の様にクロージャ(特権メソッド)を使用して、アクセッサを実装する代わりに、Object.definePropertyメソッドを利用してアクセッサメソッドを実装することもできます。 
- 
- 
-> TODO 
- 
-詳しくはこちらを参照してください。 
-\\ 
- 
  
 ===== 組み込みオブジェクト ===== ===== 組み込みオブジェクト =====
行 210: 行 168:
 </sxh> </sxh>
 \\ \\
- 
-===== thisキーワード ===== 
- 
-^使用場所^参照先^ 
-|関数外|Globalオブジェクト| 
-|関数内|Globalオブジェクト(strictモードでundefined)| 
-|コンストラクタ|対象オブジェクト| 
-|メソッド|対象オブジェクト| 
-|イベントリスナー|対象オブジェクト| 
-|Functionオブジェクトの[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call|call]]メソッド|引数で指定されたオブジェクト| 
-|Functionオブジェクトの[[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply|apply]]メソッド|引数で指定されたオブジェクト| 
  
  
js/object/basic.1621829039.txt.gz · 最終更新: 2021/05/24 13:03 by tanaka