2010年9月26日日曜日

JavaScriptで使うグローバルな名前を減らす方法 - Blogger

Bloggerブログの本文を書く。ラベルと貼り付けとHTMLモード
グローバルな名前を減らすと、JavaScriptを含む記事を並べて表示した時に、名前が重なり難くなります。
このブログで使っているのは、3つの方法です。

o ローカル変数を使う方法
o 一時的に使う変数や関数を、名前の無い関数の中に閉じ込める方法
o グローバル変数を1つだけ公開して、外から使いたい関数や変数をグローバル変数のプロパティにする方法


**** 手順
** ローカル変数を使う方法
o JavaScriptにおけるローカル変数とは、関数の中でのみ有効な変数の事です。
o 関数の引数(functionの直後にある丸括弧の中に書いた変数)の名前は、何も書かなくてもローカルになります。
o また、関数の中で変数を初めて使う場所で、「var 変数名; 」もしくは、「var 変数名 = 」の形で書くと、その変数名もローカルになります。
--------
<script type="text/javascript">
//<![CDATA[
<!--
function f(name) {
  var d = document;
  for (var i = 1; i <= 3; ++i) {     d.writeln("ミクさんが" + i + "人<\/br>");
    d.writeln( name +"さんが" + i + "人<\/br>");
  }
}

f("ネギ");
//-->
//]]>
</script>
--------

o この場合、変数 name, d, i は、関数 f の外から見えません。


** 一時的に使う変数や関数を、名前の無い関数の中に閉じ込める方法
o そして、中で使う変数には varを付けて、ローカル変数化します。
--------
<script type="text/javascript">
//<![CDATA[
<!--
(function(){
  var v = new Date();
  document.write("今日は" +v.getDate() + "日です。");
})()
//-->
//]]>
</script>
--------

o この場合、変数 v は無名関数の外から見えません。
o documentは、ブラウザーが用意しているグローバルな名前です。


** グローバル変数を1つだけ公開して、外から使いたい関数や変数をグローバル変数のプロパティにする方法
o ページ毎にキーワードを決めます。この例のキーワードは、MikuSan です。
o グローバル変数の名前を「MikuSan」、操作したいspanタグのidを「MikuSan_name」にする事で、他ページからの干渉を防ぎます。
--------
<script type="text/javascript">
//<![CDATA[
<!--
var MikuSan = new (function() {
  var $ = function(v) {
    return document.getElementById("MikuSan_" + v);
  }
  this.setSpan = function(span_id, message) {
    $(span_id).innerHTML = message;
  return true;
  }
})();
//-->
//]]>
</script>
<form>
<input type="button" value="挨拶ボタン" onclick="return MikuSan.setSpan('name', 'こんにちは、ミクさん。');">
<span id="MikuSan_name"></span>
</form>
--------

o この場合、var を使って宣言したローカル変数 $は、関数 f の外から見えません。
o 関数 f の外から見えるのは、this. を使って宣言したプロパティ setSpan です。
o 変数 MikuSan はグローバル変数です。関数の外で var を付けているからです。


**** メモ
o グローバルな名前を減らす利点については「ブログの本文にJavaScriptを書く時の注意点」をどうぞ。
o 上の書き方は一例です。JavaScriptは表現の幅が広い言語ですから、自分の好みの書き方で実現します。


==
関連ページ:
    ▼Bloggerブログの本文を書く。ラベルと貼り付けとHTMLモード
    ▼Blogger
    ▼制作メモ
    > HTMLの編集やHTMLモードで入力する時に、変換が必要になる記号
    HTMLモード。特定ページのサイドバーが下にずれる時の確認点
    +
    ブログの本文にJavaScriptを書く時の注意点
(2010年9月26日変更。プロパティにする例について単純化と説明追加)