ライブラリ同士の衝突を防ぐ

prototype.jsと一緒に使いたかったり、他のライブラリも使いたかったりした時に、どうすればいいのだろう。

ADD20080110
ここをきちんと読んだほうがいいかも、
公式:Avoiding Conflicts with Other Libraries | jQuery Learning Center
公式:Plugins | jQuery Learning Center


ADD20080110
実際にプロトタイプと、jQueryがうまく動くかどうか
やってみた。

<script src="/js/prototype.js"></script>---ここにあるとd.innerHTMLはunderfinedになる
<script src="/find/jquery.js" type="text/javascript"></script>
<script src="/js/jquery.dimensions.js" type="text/javascript"></script>
<script src="/js/jquery.gradient.js" type="text/javascript"></script>
<script src="/js/prototype.js"></script>---ここにあるといい
<script>
	function test(){
		var d = $('myDiv');
		alert(d.innerHTML);
		d.hide();
		d.show();
		d.addClassName('active');
	}
</script>

そのうち理由が解かればいいか、、、





調べてみた。

匿名関数で匿名スコープ&インスタンス

このページのように、いろいろなスクリプトが混在しそうな(恐ろしい)場所では、こんな風に「(function (){」 と 「})()」で囲む、という作業だけなので、手軽にローカルスコープを実現する手段として優れているかな?と。

それを、次のようにnewして変数に代入することで名前を与えて新しいインスタンスを作ることもできます。

括弧で囲むのは、以下と同じ意味。

var f = function() {};
f();

ie7.jsや、「ローカルスコープ」の検索結果 - jQuery メモ帳
あたりでであった、なんだろこれと思っていた書き方の説明を見つけたのでメモ。
追伸:JavaScriptではvarキーワードが省略された場合、その変数はグローバル変数と見なされる。