JavaScript 制御構造 新しいページはコチラ
提供: yonewiki
(→this) |
(→with 省略表記) |
||
716行: | 716行: | ||
=== with 省略表記 === | === with 省略表記 === | ||
+ | *with(document){ ... } | ||
+ | :と上記のようにすると{ ... }で囲われた部分でdocumentというオブジェクトの階層表記を省略することができます。上記のサンプルでは何度も何度もdocumentというキーワードが登場してしまっていて煩雑になっています。このコード記述労力を低減することができる構造文です。VBAという言語でも似たような省略記法が実現できますので、VBAを知っている人には理解しやすいと思います。 | ||
+ | |||
+ | |||
+ | サンプル | ||
+ | <syntaxhighlight lang="javascript" line start="1"> | ||
+ | <HTML> | ||
+ | <HEAD> | ||
+ | <TITLE>JavaScript this</TITLE> | ||
+ | </HEAD> | ||
+ | <BODY> | ||
+ | JavaScript this<br /> | ||
+ | <SCRIPT Language="JavaScript"> | ||
+ | <!-- | ||
+ | var Num =10000; | ||
+ | function objNewCreate(){ | ||
+ | with(document){ | ||
+ | write("■自作関数obNewCreate this.Num 初期値<br />"); | ||
+ | write("this.Num = " + this.Num + "<br />"); | ||
+ | } | ||
+ | this.Num = 5000; | ||
+ | with(document){ | ||
+ | write("■自作関数obNewCreate this.Num = 5000 代入後<br />"); | ||
+ | write("this.Num = " + this.Num + "<br />"); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | with(document){ | ||
+ | write("<br />"); | ||
+ | write("◎Create1オブジェクト生成 new<br />"); | ||
+ | } | ||
+ | |||
+ | objNewCreate1 = new objNewCreate(); | ||
+ | |||
+ | with(document){ | ||
+ | write("<br />"); | ||
+ | |||
+ | write("■オブジェクトにぶら下げた変数プロパティの出力<br />"); | ||
+ | write("objNewCreate1.Num = " + objNewCreate1.Num + "<br />"); | ||
+ | write("■objNewCreate1オブジェクトはトップレベルのwindow = this オブジェクトの下に関連付けられている。<br />"); | ||
+ | write("this.objNewCreate1.Num = " + this.objNewCreate1.Num + "<br />"); | ||
+ | write("■objNewCreate1オブジェクトはトップレベルのwindow = this オブジェクトの下に関連付けられている。<br />"); | ||
+ | write("window.objNewCreate1.Num = " + window.objNewCreate1.Num + "<br />"); | ||
+ | |||
+ | write("<br />"); | ||
+ | write("■トップレベルからの関数呼び出し オブジェクト生成無し。<br />"); | ||
+ | write("Num = " + Num + "<br />"); | ||
+ | } | ||
+ | objNewCreate(); | ||
+ | with(document){ | ||
+ | write("Num = " + Num + "<br />"); | ||
+ | } | ||
+ | --> | ||
+ | </SCRIPT> | ||
+ | </BODY> | ||
+ | </HTML> | ||
+ | </syntaxhighlight> | ||
+ | [[Media:JavaScript SeigyoKozo with.html|実行結果サンプル]] | ||
+ | |||
+ | これは、コードの記述量が減る場合もありますが、インデントが多くなります。なにが便利なのかは各自で見極めてほしいと思います。 | ||
== 関数 == | == 関数 == |