このコードを考えると:
function Test(){
var $D = Date.prototype;
$D.addDays=function(value){this.setDate(this.getDate()+value);return this;};
$D.clone = function() {
return new Date(this.getTime());
};
alert(new Date().addDays(5));
var x = 5;
}
Test();
alert(new Date().addDays(1));
alert(x);
alert(x)
xは関数に制限されているため、「xisundefined」エラーをスローする唯一のエラーがスローされますTest()
の呼び出しaddDays()
は、関数内と関数外の両方で機能します。
これは、Dateプロトタイプのスコープがグローバルであるためだと思います。したがって、クロージャー内で拡張することは関係ありません。
したがって、クロージャー内でDateを拡張したいが、他のJavaScriptが拡張を取得することを許可しない場合、どうすればよいですか?
私が尋ねている理由は、コアjavascriptオブジェクトを拡張するときに、同じ変更を行う可能性のある他のライブラリと競合したくないためです。