反射

  • 增加程序的靈活性,避免將程序?qū)懰赖酱a里
    /**
     * 獲取window的屬性和方法
     */
    for(var i in window)
    {
        console.log(i+':'+window[i])
    }


   /////////////////////////////////////////////////////////////////////


    /**
     * 根據(jù)鍵盤值,執(zhí)行相應(yīng)方法
     */
    window.addEventListener('keydown',function(e)
    {
        keyEvent[e.keyCode]()
    })
    
    
    /**
     * 鍵盤事件
     */
    var keyEvent = {
        
        65:function()
        {
            alert('A')
        },
        
        83:function()
        {
            alert('S')
        },
        
        68:function()
        {
            alert('D')
        }
    }



    /**
     * 根據(jù)數(shù)據(jù),更新元素樣式
     */
    function style(data)
    {
        for(var i in data)
        {
            document.body.style[i] = data[i];
        }
    }
    
    style({'background-color':'red'});



   /////////////////////////////////////////////////////////////////////



    /**
     * switch耦合
     */
    switch(num)
    {
        case 0 :
            console.log('跑步')
            break;
        
        case 1 :
            console.log('跳躍')
            break;
        
        case 2 :
            console.log('睡覺')
            break;
    }
    
    
    
    /**
     * 反射解耦
     */
    function people()
    {
        function run()
        {
            console.log('跑步')
        }
        
        function jump()
        {
            console.log('跳躍')
        }
        
        function sleep()
        {
            console.log('睡覺')
        }
        
        return{
            
            0:run,
            1:jump,
            2:sleep
        }
    }
    
    
    new people()[value]
反射
  • 框架與框架要解決的核心問題

我們做房子賣給用戶住,用于用戶自己安裝門窗和空調(diào),我做的房子就是框 架,用戶需要使用我的框架,把門窗插入進(jìn)我提供的框架中??蚣芘c工具類有區(qū)別,工具類被用戶的類調(diào)用,而框架則是調(diào)用用戶提供的類。

  • 框架要解決的核心問題

我在寫框架(房子)時(shí),你這個(gè)用戶可能還在上小學(xué),還不會(huì)寫程序呢?我寫的框架程序怎樣能調(diào)用到你以后寫的類呢?

/**
 *  代碼示例
 */
Class.forName(classNameStr).getMethod(methodName).invoke(obj,Class)

因?yàn)樵趯懗绦驎r(shí)無法知道要被調(diào)用的類名,所以,在程序中無法直接new某個(gè)類的實(shí)例對(duì)象了,而要用反射方式來做

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容