【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ イオン発生機 プラズマクラスター25000搭載 車載用 ゴールド IG-GC15-N【ラッピング不可】【MC】


 >  > 【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ イオン発生機 プラズマクラスター25000搭載 車載用 ゴールド IG-GC15-N【ラッピング不可】【MC】

【メーカー在庫あり】 (株)タンガロイ タンガロイ 外径用TACバイト CGWSL1616-W30-L JP

【メーカー在庫あり】 (株)タンガロイ タンガロイ 旋削用溝入れ 5個入り PSGB20 HD KOMINE コミネ 電熱ウェア JK-558 エレクトリックヒートベスト 70系 ノア ヴォクシー サンシェード ワンタッチで取付可能 車用カーテン 吸盤 フロント用 ZRR70 ZRR75 車 日よけ 車中泊グッズ 防災グッズ カスタム パーツ アクセサリー 純正品質 車内 紫外線対策 内装 目隠し 遮光 ワンタッチサンシェード カワサキ純正 キャップ 11065-0090 JP店 【メーカー在庫あり】 ジェフコム(株) デンサン ブラックエース50m BX-5250 HD 【送料無料】 175/60R16 16インチ TOPY トピー ドルフレン ビゲープ 6J 6.00-16 DUNLOP ダンロップ EC202L サマータイヤ ホイール4本セット フジコーポレーション

Macromedia Flash非公式テクニカルノート

IG-GC15-N【ラッピング不可】【MC】 イオン発生機 ゴールド IG-GC15-N【ラッピング不可】【MC】 ゴールド 車載用 プラズマクラスター25000搭載 【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ

ID: FN0204001 Product: Flash

Platform: All
Version: MX

1. superによるスーパークラスの初期化とメソッドの実行
MXから実装された'super'演算子を使用すると、サブクラスのコンストラクタでスーパークラスを初期化したり、サブクラスのメソッドからスーパークラスのメソッドを呼出すことができます。'super'演算子の使用法方について理解するためには、「継承」に関する基本的な知識が必要となります。「継承」については、オンラインヘルプ「ActionScript 言語について」>「カスタムオブジェクトについて」>「継承の作成」をご参照ください。

サブクラスのコンストラクタでスーパークラスを初期化し、サブクラスのメソッドからスーバークラスのメソッドを呼出すスクリプトのサンプルが、以下です。

Person = function (name) {
  this.name = name;
};
Person.prototype.getInfo = function() {
  return this.name;
};
Profile = function (name, hobby) {
  // [1]スーパークラスのコンストラクタを呼出して初期化
  super(name);
  this.hobby = hobby;
};
// [2]スーパークラスのインスタンスを'prototype'に継承
Profile.prototype = new Person();
// [3]サブクラスにメソッドを設定
Profile.prototype.getInfo = function() {
  // [4]スーパークラスのメソッドを呼出す
  var name = super.getInfo();
  return name+":"+this.hobby;
};
// [5]コンストラクタによるインスタンスの生成とメソッドの実行
madScripter = new Profile("Fumio", "Bug fixing");
trace(madScripter.getInfo());
// 出力ウィンドウの結果
Fumio:Bug fixing

スクリプト中に記載したコメントに沿って、簡単にご説明します。

[1]サブクラス"Profile"のコンストラクタの中で、スーパークラスを'super'演算子で呼出し、引数を渡しています。ただし、コンストラクタを定義した段階では ●クスコ / CUSCO●フォーミュラリンク 116 470 A トヨタ スプリンター トレノ AE86 HKS ハイパーマックス Sスタイル C フィットハイブリッド(GP4) 車高調 サスペンション SstyleC、まだ関数中のステートメントは実行されません。実際に処理が行われるのは、[5]でコンストラクタを呼出したときになります。

[2]サブクラス"Profile"の'prototype'プロパティに、スーパークラス"Person"のコンストラクタから生成したオブジェクトインスタンスを設定しています。

注意しなければいけないのは、このステートメントは、サブクラスの'prototype'プロパティを、スーパークラスのオブジェクトインスタンスで書替えているということです。したがって、サブクラスの'prototype'にメソッドやプロパティを設定するのは ダイハツ タントエグゼ L450系 14インチ アルミホイール 一台分(4本) RIZLEY XS (ライツレー エックスエス) ブラックメタリックポリッシュ アルミ 取寄 SDR5050 ディスクローター フロント:SDR、このステートメントの後に行わなければなりません。たとえば Skidmarx スキッドマークス ウィンドスクリーン ツーリングタイプ カラー:ブルー FZ1 FAZER 2006-2016、つぎの[3]のメソッド設定をこのステートメントより前に記述すると、

、その設定は'prototype'プロパティの書替えによってクリアされてしまいます。

また、[1]でスーパークラスを初期化する前に、このステートメントがコンストラクタを呼出していることにも、留意しておく必要があります。たとえば、スーパークラスの初期化で、コンストラクタが呼出された回数をプロパティなどに使用する場合は 、この処理が回数にカウントされてしまうことになります。

[3]サブクラスの'prototype'プロパティに、メソッドを設定しています。

[4]メソッド中で、'super'演算子を使ってスーパークラスの同名のメソッドを呼出しています。

2. コンストラクタ中に定義したメソッド
前述のサンプルでは、メソッドをクラスの'prototype'プロパティに定義しました。これに対して、メソッドをコンストラクタの中でインスタンスに対して設定する方法も考えられます。けれど、この方法は推奨されていません(オンラインヘルプ「ActionScript 言語について」>「カスタムオブジェクトについて」>「カスタムオブジェクトにメソッドを割り当てるには」参照)。コンストラクタからオブジェクトを生成するたびに、インスタンスに対して個別にメソッドが定義されることになるからです。

'super'演算子でスーパークラスのメソッドを実行する場合には、スーパークラスのコンストラクタ中で定義したのでは、正しく呼出すことができません。前述のサンプルのメソッド定義を、コンストラクタ中で行うように書替えたのが以下のスクリプトです。

Person = function (name) {
  this.name = name;
  // コンストラクタ中でメソッドを定義
  this.getInfo = function() {
    return this.name;
  };
};

【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ イオン発生機 プラズマクラスター25000搭載 車載用 ゴールド SIXSENSE(シックスセンス) IG-GC15-N【ラッピング不可】【MC】 ディクセル


Profile = function (name, hobby) {
  super(name);
  this.hobby = hobby;
  // コンストラクタ中でメソッドを定義
  this.getInfo = function() {
    var name = super.getInfo();
    return name+":"+this.hobby;
  };
};
Profile.prototype = new Person();
madScripter = new Profile("Fumio", "Bug fixing");
trace(madScripter.getInfo());
// 出力ウィンドウの結果
:Bug fixing

出力ウィンドウの結果を見ると、スーパークラス"Person"のコンストラクタ中に定義したメソッドが呼出されていません。'super'演算子を使って呼出すメソッドは、

【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ イオン発生機 プラズマクラスター25000搭載 車載用 ゴールド IG-GC15-N【ラッピング不可】【MC】

、クラスの'prototype'に定義する必要があります。

3. __proto__を使った継承
__proto__による継承でsuperを使う」をご参照ください。

_____

作成者: 野中文雄
更新日: 2003年5月15日スクリプト中の不要な引数削除
更新日: 2002年4月29日 スクリプト中の改行漏れ修正
作成日: 2002年4月9日


Copyright ©【ママ割】ポイント5倍(対象ショップ限定エントリー必要)シャープ イオン発生機 プラズマクラスター25000搭載 車載用 ゴールド IG-GC15-N【ラッピング不可】【MC】 All Rights Reserved. © 2001-2006 Fumio Nonaka.  All rights reserved.
   
{yahoojp} {fumiononaka.com} jpprem01-zenjp40-wl-zd-14985 {yahoojp}jpprem01-zenjp40-wl-zd-14985