zoukankan      html  css  js  c++  java
  • JavaScript的一些知识碎片(2)-反射-全局变量-回调

    JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能。在静态语言中,反射是一个高大上的东西,比如在运行时动态创建方法并调用,延迟绑定等等等等,当八九年前第一次用到C#的反射时,那个激动劲就别提了。但是在动态语言世界里,很多功能不必要通过反射实现了,所以javascript的反射会变得比较简单,因此javascript中反射的主要用法就那么几个如typeof ,instanceof,hasOwnProperty

    var alteral={
    name:"a lteral"
    };
    
    console.log(typeof alteral );//object 
    console.log(alteral.hasOwnProperty("name"));//true
    console.log(alteral.hasOwnProperty("gender"))//false;
    
    var fun = function(){
    var subfun=function(){
    return null
    };
    };
    
    typeof(fun);
    console.log( fun instanceof Function); //true

    全局变量:

    在javascript中,你可以在任何地方随便定义一个全局变量。小应用好像很方便,代码成规模,切分文件后,就完蛋了。编译器不管,我们可以管。

    两种方式:

    1.全部写在一起,如程序最顶端,好管理。

    2.写一个全局变量的容器,在使用时把所有的全局变量都扔进去。这样的好处也是统一管理方便检索。

    var variableBag={
    }

    回调 在JavaScript中的实现形式是这样的:将一个函数当做参数传入另一个函数,这个函数会在适当的时候调用被传入的参数。我们用一段代码的例子来解释:

    function mainfunction(callback){//定义一个宿主函数,它接收一个callback函数作为参数。
    
        //做一些事情,比如等待1秒钟后,把当前时间传给callback
        var startTime = new Date().getTime(); 
        while (new Date().getTime() < startTime + 1000);
        var now = new Date().getTime();
        
        callback(now);//调用传入的参数
    };
    
    function afunction(time){//定义callback函数
        console.log("afunction is called");
        console.log(time);
    };
    
    mainfunction(afunction);//调用宿主函数

    执行这段代码的结果就是在等待一秒钟后回调函数afunction被宿主函数调用,同时宿主函数传递了一个参数给afunction,这一点非常重要。因为在现实中,传递的参数都是回调函数要正确执行所依赖的内容。

  • 相关阅读:
    struts传值方式ModelDriven的使用
    sql查询count 单独字段不同值
    图片-文件上传下载
    HTML 字符实体 &lt; &gt: &amp;等
    Validation failed for object='employee'. Error count: 1问题解决
    MySQL查询本周、上周、本月、上个月份数据的sql脚本
    React前端框架路由跳转,前端回车事件、禁止空格、提交方式等方法
    环境变量误删path找回方法与mysql基础命令
    树结构的控制
    数据库查询方法
  • 原文地址:https://www.cnblogs.com/skytraveler/p/4145321.html
Copyright © 2011-2022 走看看