最近才了解javascript的反射機(jī)制,只知道Java中有反射機(jī)制,沒想到這腳本中也有反射機(jī)制.真是應(yīng)了我的那句話"沒有做不到,只有想不到".費(fèi)話不說太多,還是分享一下我的學(xué)習(xí)心得.
我們先創(chuàng)建一個(gè)簡(jiǎn)單的對(duì)象.
注意:
typeof是用來測(cè)試數(shù)據(jù)類型的,它有六種返回值:"number," "string," "boolean," "object," "function," 和 "undefined."(不過要注意這六種返回值一定要是小寫的.我在學(xué)習(xí)的過程中就遇到過這樣的問題).
我們首先對(duì)傳進(jìn)來的對(duì)象A做了一次遍歷,會(huì)得到對(duì)象中的屬性名和方法名,在用ObjectName[propertyName]查看他們的類型.
我們?cè)诳纯聪乱粋€(gè)問題:
其實(shí)這個(gè)代碼塊有二個(gè)看點(diǎn):
從第6行開始到第14行.
每個(gè)執(zhí)行的方法中都會(huì)有一個(gè)Arguments對(duì)象,作用是獲得執(zhí)行方法中的參數(shù).有了這個(gè)東東,我們就可以寫多態(tài)的方法了.
還一個(gè)就是第30行.
其實(shí)上面那段代碼搞懂了,下面這個(gè)就知道了,其實(shí)這個(gè)是我寫文章的時(shí)候想出來的.呵呵.
我們先創(chuàng)建一個(gè)簡(jiǎn)單的對(duì)象.
js 代碼
- <script>"text/javascript">
- var A={
- author:"poyexinghun",
- init:function(){
- alert("load A");
- }
- }
- function showObject(obj){
- for(var p in obj){
- if(typeof obj[p]=="function"){
- obj[p]();
- }else if(typeof obj[p]=="string"){
- document.write(p+"--->"+obj[p]+"
"); - }
- }
- }
- showObject(A);
- </script>
typeof是用來測(cè)試數(shù)據(jù)類型的,它有六種返回值:"number," "string," "boolean," "object," "function," 和 "undefined."(不過要注意這六種返回值一定要是小寫的.我在學(xué)習(xí)的過程中就遇到過這樣的問題).
我們首先對(duì)傳進(jìn)來的對(duì)象A做了一次遍歷,會(huì)得到對(duì)象中的屬性名和方法名,在用ObjectName[propertyName]查看他們的類型.
我們?cè)诳纯聪乱粋€(gè)問題:
js 代碼
- <script>"text/javascript">
- var A={
- author:"poyexinghun",
- init_tiem:new Date(),
- init:function(){
- if(arguments.length == 1){
- if(typeof arguments[0] =="string"){
- alert(arguments[0]);
- }else{
- alert("args isn't string type");
- }
- }else{
- alert("load A");
- }
- }
- }
- function showObject(obj){
- for(var p in obj){
- if(typeof obj[p]=="function"){
- obj[p](new Date());
- }else if(typeof obj[p]=="string"){
- document.write(p+"--->"+obj[p]+"
"); - }else if(typeof obj[p]=="object"){
- document.write(p+"--->"+obj[p].getYear()+"-"+obj[p].getMonth()+"-"+obj[p].getDate()+"
"); - }
- }
- }
- showObject(A);
- A["init"]("aaaa");
- </script>
從第6行開始到第14行.
每個(gè)執(zhí)行的方法中都會(huì)有一個(gè)Arguments對(duì)象,作用是獲得執(zhí)行方法中的參數(shù).有了這個(gè)東東,我們就可以寫多態(tài)的方法了.
還一個(gè)就是第30行.
其實(shí)上面那段代碼搞懂了,下面這個(gè)就知道了,其實(shí)這個(gè)是我寫文章的時(shí)候想出來的.呵呵.