オブジェクトのプロパティを動的に切り替える方法(JavaScript)
今回は、オブジェクトのプロパティを動的に切り替える方法を説明します。
といあえず、下記のサンプルを見てください。
<html>
<head>
<script type="text/javascript">
<!--
///////////////////////////////////////////
function init() {
var objNumber = new Number('123');
alert( objNumber.toString() );
objNumber.toString = function hoge() {
return '切り替わりましたか?';
}
;
alert( objNumber.toString() );
}
// -->
</script>
</head>
<body onLoad="javascript:init();">
</body>
</html>
実行結果は、下記のようになります。
-------------------------------------------------------------------------
アラートダイアログが出力され、「123」と表示される。
アラートダイアログが出力され、「切り替わりましたか?」 と表示される。
-------------------------------------------------------------------------
上記のサンプルでは、123という値のNumberオブジェクトを生成し、
Numberオブジェクトの toString() 関数を呼び出し、
Numberオブジェクトの値の文字列表現を返し、
alert関数でアラートダイアログに値を表示しています。
-------------------------------------------------------------------------
var objNumber = new Number('123');
alert( objNumber.toString() );
-------------------------------------------------------------------------
Numberオブジェクトの toString() 関数に対して、
hoge() 関数を代入します。
-------------------------------------------------------------------------
objNumber.toString = function hoge() {
return '切り替わりましたか?';
}
;
-------------------------------------------------------------------------
すると、Numberオブジェクトの toString() 関数を呼び出すと、
「切り替わりましたか?」 とアラートダイアログに表示されます。
-------------------------------------------------------------------------
alert( objNumber.toString() );
-------------------------------------------------------------------------
このように、JavaScriptでは、オブジェクトのプロパティを
動的に切りかえることが出来ます。
ちなみに、Numberオブジェクトは、JavaScriptで用意されている
既存のオブジェクトです。
既存のオブジェクトの振る舞いさえも動的に変更できてしまうわけです。
いや、びっくり!!