ここは、ふぇりあ16歳が不定期に連載しているオンライン小説のページです。
VNIふぇりあ16歳へ
ゼロからわかる現代JavaScript
19.グローバル変数とローカル変数、各種スコープ
さて、変数はなんだかいつの間にか使っていたので
分かると思います。
しかし実はみな同じように見えても、変数には種類があります。
それは
・グローバル変数
全体からアクセスでき、一時的な記憶フィールドとして使えます
・ローカル変数
メソッドの中でしか使用できず、メソッドが実行されたらデータが失われます。
・クラス変数(メンバ変数)
基本はクラスの中からアクセスし、オブジェクトを作ればいろいろなところから呼び出せます。
一時的な記憶フィ−ルドとして使用できます。
よりオブジェクト指向らしい使い方はプロパティを使い、外部からクラス変数を
操作する方法です。
今回使用するソースコード |
//グローバル変数 var global_var = "どこでも呼び出せるよ"; local(); //aとここで書いても呼び出せない(ローカル変数) //クラス変数呼び出し mc = new Myclass(); mc.scope(); //プロパティの使用 mc.setclass("変数obj.classに新しい値を設定するよ"); //オブジェクトをメソッドに送る MCsend(mc); function local() { var a = "変数aはメソッド内のみ"; document.write(a); document.write("<br>変数global_varは" + global_var + "<br>"); } function Myclass() { var obj = this; obj.class = "変数obj.classはまずクラス内メソッドから呼び出すよ<br>"; obj.scope = function () { document.write(obj.class); } //プロパティ obj.getclass = function () { return obj.class; } obj.setclass = function (x) { obj.class = x; } } function MCsend(x) { //送られたオブジェクトmcのメソッドを実行している x.scope(); } |
またオブジェクトをメソッドに送ることもできます。
その時は、そのオブジェクトを引数にとり
引数.メソッド()
と実行できます。ややこしいですね。
さらに、メソッドのほとんどはグローバルメソッドとして実行できますが、
クラスのメソッドscopeはオブジェクトが無いと呼び出せないことも分かると思います。
実行結果
コラム;
JavaScriptのスコープは他の言語に比べてゆるいです。
そのためソースが煩雑になりやすくなりますので、
上手な人のソースをみてオブジェクト指向らしい方法で組むと
すっきり見やすく書けると思います。
(C)著作権はふぇりあ16歳とお兄ちゃんにあります。
無断転載、盗用は禁止です。