JavaScript的一些知识碎片(2)-反射-全局变量-回调

页面导航:首页 > 网络编程 > JavaScript > JavaScript的一些知识碎片(2)-反射-全局变量-回调

JavaScript的一些知识碎片(2)-反射-全局变量-回调

来源: 作者: 时间:2016-02-05 11:06 【

JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能。在静态语言中,反射是一个高大上的东西
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={
}
 
 
回调 在Script中的实现形式是这样的:将一个函数当做参数传入另一个函数,这个函数会在适当的时候调用被传入的参数。我们用一段代码的例子来解释:
 
 
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,这一点非常重要。因为在现实中,传递的参数都是回调函数要正确执行所依赖的内容。
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<