2009年2月20日 星期五

[JavaScript] expando 屬性的定義與使用

最近在讀 Learning Jquery 時,看見 JavaScript expando,是個蠻有意思的東西,可以自行擴充 JavaScript object 的屬性。

而由於這些屬性是放置於 memory 中,因此使用起來速度較快,不過也要記得釋放,免得出現 memory leak 的問題。

在網路上查詢到以下的範例(內容有稍作修改),說明 JavaScript expando 的使用方式:
<html>
<head>
<script type="text/javascript">
<!--
var myObj = new Object();
alert(myObj.toString()); //出現 "[object Object]"

//設定 expando 屬性
myObj.myExpando = "Hello Expando";
myObj.toString = function(){ //override toString() method
return this.myExpando;
}
alert(myObj.toString()); //出現 "Hello Expando"

//設定 expando 屬性
myObj.reportTime = function(){
alert(new Date());
}
myObj.reportTime(); //出現目前的日期與時間

//刪除 expando 屬性
delete myObj.reportTime;

//再一次嘗試呼叫已經刪除的 expando 屬性
try {
myObj.reportTime();
} catch(e) {
alert(e.message); //出現 "myObj.reportTime is not a function"
}
-->
</script>
</head>
<body>
</body>
</html>



參考資料

沒有留言:

張貼留言