反射

  • 增加程序的灵活性,避免将程序写死到代码里
    /**
     * 获取window的属性和方法
     */
    for(var i in window)
    {
        console.log(i+':'+window[i])
    }


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


    /**
     * 根据键盘值,执行相应方法
     */
    window.addEventListener('keydown',function(e)
    {
        keyEvent[e.keyCode]()
    })
    
    
    /**
     * 键盘事件
     */
    var keyEvent = {
        
        65:function()
        {
            alert('A')
        },
        
        83:function()
        {
            alert('S')
        },
        
        68:function()
        {
            alert('D')
        }
    }



    /**
     * 根据数据,更新元素样式
     */
    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]
反射
  • 框架与框架要解决的核心问题

我们做房子卖给用户住,用于用户自己安装门窗和空调,我做的房子就是框 架,用户需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。

  • 框架要解决的核心问题

我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎样能调用到你以后写的类呢?

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

因为在写程序时无法知道要被调用的类名,所以,在程序中无法直接new某个类的实例对象了,而要用反射方式来做

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容