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,这一点非常重要。因为在现实中,传递的参数都是回调函数要正确执行所依赖的内容。
JavaScript的一些知识碎片(2)-反射-全局变量-回调的更多相关文章
- JavaScript的一些知识碎片(1)
打算把使用Javascript的水平从child提升到小学毕业,近期会持续记录一些知识点. javascript的引用机制:只要一个对象赋值为另一个对象,就建立了引用.一旦建立了引用,对象们就公用一块 ...
- 快速掌握JavaScript面试基础知识(二)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- 图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)
图形学理论知识 BRDF 双向反射分布函数 Bidirectional Reflectance Distribution Function BRDF理论 BRDF表示的是双向反射分布函数(Bidire ...
- 快速掌握JavaScript面试基础知识(三)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- Java开发培训基础知识解析之反射机制
Java是老牌编程语言,是当前应用最广泛的编程语言之一.想要学习Java你就一定要掌握Java基础知识,而反射对于初学Java的人来说绝对是非常重要的知识点.什么是反射?如何理解反射机制?如何使用反射 ...
- JavaScript 面向对象开发知识基础总结
JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...
- JavaScript的高级知识---词法分析
JavaScript的高级知识---词法分析 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 函数在运行的瞬间, ...
- javascript的基础知识及面向对象和原型属性
自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...
随机推荐
- 玩了一天的Git
今天的逗比事 Git从学习到使用,也有2个月时间了,一开始也就看看廖雪峰老师的Git教程,跟着做了一遍,感觉非常受用. 遇到一些忘掉的命令,再回去查查也基本都没问题. 但是今天缺遇到了逗比事,回过头来 ...
- 因GIT默认忽略.dll文件导致的Visual Studio项目通过Bamboo编译失败
背景 由GIT管理的Visual Studio项目,使用Stash管理远端代码库,通过与Stash集成的Bamboo生成项目并发布 现象 Visual Studio项目本地生成成功,用SourceTr ...
- Apache虚拟主机配置
在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...
- Angularjs之如何在跨域请求中传输Cookie
一般情况我们在使用WebApi之类的技术时,都会遇到跨域的问题,这个只需要在服务端做一下处理即可. 如果这些GET或POST请求不需要传递Cookie数据的话,就没什么问题了,但如果需要,那么会发现 ...
- 0014 Java学习笔记-集合-HashMap集合
主要的方法 + 构造方法: * HashMap(); - 默认大小16,负载因子0.75 * HashMap(int initialCapacity); * HashMap(int initialCa ...
- sql server 2008 相关基础(物理备份还原)
1. restore database KLJY_juncsoft from disk= 'D:\\kljy_2012_12_28.bak' with recovery 注意在还原时,进度一直显示0% ...
- openstack-kilo--issue(九) heat stacks topology中图形无法正常显示
======声明======= 欢迎转载:转载请注明出处 http://www.cnblogs.com/horizonli/p/6186581.html ==========环境=========== ...
- bootstrap简单的过一遍
注:.xxxx 表示类(class=xxxx) <h1>到<h6>均可使用.另外还提供了.h1到.h6的class .lead可以让段落突出显示 <small> ...
- php模拟飞鸽传输协议,代码实现向飞鸽发送消息
飞鸽传书协议:1:23149:riverlet:127.0.0.1:\x20:balabalabalabala版本号:包编号:发送者姓名:发送者主机名:命令字:附加信息(消息内容) <?php ...
- ES6函数默认参数(Default Parameters)
语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷. 我们经常会这么写 function calc(x, y) { x = x || 0; y = y ...