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|実行結果サンプル]] | ||
| + | |||
| + | これは、コードの記述量が減る場合もありますが、インデントが多くなります。なにが便利なのかは各自で見極めてほしいと思います。 | ||
== 関数 == | == 関数 == | ||