クロージャの定義がいまいち分からないのですが、、、
要するに名前空間が「とある局所」で維持できればいいので、、、
インラインスクリプト<div class="portlet" id="portlet-1">
<script type="text/javascript">
(function() { //無名関数を実行
//スクリプトファイルを同期で読み込んで実行
eval($.ajax({url:'portlet.js',async:false}).responseText);
var portletName = 'ポートレット1'; //ローカル変数の上書き
$(initPortlet); //「portlet.js」の初期化関数呼出
})();
</script>
</div>
<div class="portlet" id="portlet-2">
<script type="text/javascript">
(function() {
eval($.ajax({url:'portlet.js',async:false}).responseText);
var portletName = 'ポートレット2';
/////////////////////////////////////////////////////////
//「portlet.js」で定義されている関数のオーバーライド
var superClickPortlet = clickPortlet;
var clickPortlet = function() {
superClickPortlet.call(this,this,'Override');
};
/////////////////////////////////////////////////////////
$(initPortlet);
})();
</script>
</div>
外部スクリプト(portlet.js)//スクリプトタブの親を判定
var container = $("script:last").parents("div:first");
//ローカル変数
var portletName = 'ポートレット';
//ローカル関数
var clickPortlet = function(e,a) {
alert("portletName:"+portletName+", containerId:"+this.id+", arg1:"+a);
};
//ローカル関数
var initPortlet = function() {
$(container).click(clickPortlet);
};