JavaScriptのクラスを定義する

スーパークラスのコンストラクタ関数に引数を渡す

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
サブクラスのコンストラクタ関数に引数を与え、スーパークラスのコンストラクタ関数を呼び出して渡します。
講師:
04:55

字幕

このレッスンではサブクラスのコンストラクタ関数に引数を与えてスーパークラスのコンストラクタ関数にその引数を渡して呼び出します。今ここに定められているのは、Point というクラスを継承したvector というクラスです。そのプロトタイプにObject.create メソッドでPoint のprototype を渡しています。そして、引数は今のところないのでx と y という Point クラスのプロパティがあるんですけれどもそれを手で設定してやるということですね。そして、結果設定されたxy と length angleこれはgetter メソッドなんですがその値を確認しているという事です。でも、せっかくですからここで vector にxy と渡したいですね。でも、この xy はPoint のコンストラクタで設定していますのでここで、new Point のxy とすればいいかというとこうすると Point のオブジェクトを作ってしまうことになります。この vector のオブジェクトに対しては何も行われないという事になってしまうんですね。ですから、ここでやりたいのはPoint のコンストラクタをあたかも vector の関数の様にして呼び出して自分に xy を設定したいということです。 そんな都合のいいことができるかというとまさにそのためのメソッドがあります。MDNMozilla Developer Network のリファレンスを開きました。そして、Function.prototype.callとありますけれどもこの prototype というのはこの構文の書き方リファレンスの書き方で実際にはここに構文がありますけど関数に対して、.call 別に prototype と書きません。そして、引数としては自分の物として呼び出したいという自分を書きます。通常ここ this にすることが多いです。そして、もしその関数に引数を渡したいんであればその後にカンマ区切りで渡していけばいいということです。ちょっとこの翻訳は不完全とか書いてあって不安になるかもしれませんがこの日本語になっている部分、基本的な部分は問題がありません。では、この call というメソッドですねこれを使うことにしましょう。では、vector のコンストラクタ本体内ですけどnew じゃないですね。この Point というコンストラクタ関数を呼び出します。call ですね。そしてそれを自分のものとしてvector をコンストラクタとして作るオブジェクトですね更に this です。 この中では this で参照できるんですがthis 自分のメソッドであるかの様に呼び出してそして、引数を xy を渡しましょうということになります。そうすると、ここで引数を渡せますね。ということなんで、ここは消してしまって値は同じにするので1 と math.sqrtroot3ルート3ですね、括弧をもう一回閉じないといけませんけどこれで、あと console.log の方は一緒です。それから、テスト用にこの Point のコンストラクタにもconsole.log がありますので設定された this の x y がconsole の方に表示されることになります。では、確認していきましょう。ファイルを保存します。そして、「ブラウザでプレビュー」です。「表示」>「開発/管理」>「JavaScript コンソール」を開きます。そうすると、Point とコンストラクタが呼び出されていますね。けれど、ちゃんと xy の引数が渡されています。その渡された引数はthis vector のオブジェクトのxy に設定されています。これを見ると分かりますね。1 とルート 3の数値です。それから、length angle 斜辺の長さは 2 。 それから底角は 60 度という事できちんと引数が渡されてそれが、vector のオブジェクトに設定されているという事が分かりました。このレッスンでは、サブクラスのコンストラクタからスーパークラス、親クラスのコンストラクタを自分の関数として呼び出すFunction.call というメソッドを使って自分、this の関数であるかのようにして引数を渡すという方法についてご説明しました。

JavaScriptのクラスを定義する

実はJavaScriptのクラスはプロトタイプというオブジェクトに基づいており、JavaやC++などのクラスとは多少異なります。またJavaScriptでクラスを定義することで機能を加えたり用途を広げることができます。このコースではJavaScriptのクラスの仕組みやコンストラクタ関数の定義、プロパティやメソッドの加え方などについて説明します。

2時間21分 (22 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2016年07月11日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。