重识JavaScript

来源:互联网 发布:一搜同志个人网络东北 编辑:程序博客网 时间:2024/06/12 19:05

一、开篇:解释为什么叫重新认识JavaScript?

纯属个人学习误区,缘起大学期间的迷茫和对就业的恐慌,曾误打误撞投入了Java的怀抱,并以此来谋生,对Java的崇拜犹如朝圣者对佛祖的虔诚一样,导致对其他技术不屑唯Java独尊的心态,带来现在对JavaScript理解和认识上的态度不够好,所以现在有必要对这方面的知识进行整理,知识可能不够系统,结合当前的开发经验想到哪写哪,对技术之外的话题不会有太多的扯淡,一切为了更好更快的掌握JavaScript这门技术。


二、Java和JavaScript之间有什么联系?

没有什么联系,字面上都有Java,二者的区别可以说是有天壤之别。

区别1:Java是静态语言,源代码需要编译器先编译成class字节码后才能运行;JavaScript是动态语言,代码通过浏览器提供的JavaScript引擎边解释边执行;

区别2:Java是真正面向对象的语言,即使最简单的程序也要设计对象;JavaScript是基于对象和事件驱动的编程语言;

区别3:在Java世界中万事万物皆对象(Object),所以“类”是Java世界的最基础也是最重要的一个角色;而JavaScript中最重要的角色是函数(function),和Java中的方法相似,但却又有很多比较“变态”的地方以下重点讨论。


三、重点学习什么,忽略什么?

变量定义、流程控制、运算符之类的就没有必要再详细学习了,和Java中类似。


四、定义函数的三种方式

JavaScript中的函数永远是独立存在的,即使函数被定义在一个类中,它也是独立存在的。函数定义的方法有三,

第一种:

function 函数名 (p1, p2) {//函数体}
这种方式比较常见,易于理解。

第二种:

function (p1, p2) {// 函数体}
这种是匿名函数,也比较常见,初次不太好理解,据说Java8也要支持匿名函数了,hoho~~,看来这种方式也比较重要。

第三种:

new Function(p1, p2, ……pN,  funBody) ;
这种方式是通过Function的构造器创建的一个函数,p1到pN是新创建函数的形参列表,funBody是新创建函数的函数体,这种方式比较繁琐,不推荐使用。


五、调用函数的三种方式

第一种:调用者.函数名(参数列表);

第二种:函数名.call(调用者,参数列表);

第三种:函数名.apply(调用者, arguments);


六、函数的三种功能

第一种:

函数就当成一个函数来使用。

第二种:

函数当类来使用。定义一个函数,就产生了一个函数,一个类,为该类创建了一个构造器;因此,定义了一个JS函数,就产生了一个JS类,可以通过new的方式来调用它的构造器。

把函数当类使用时,函数里的变量可以分为:1、类变量(使用函数名作为前缀); 2、实例变量(使用this作为前缀); 3、局部变量(不使用前缀,或者使用var 来修饰);

第三种:

函数当成类的一个方法来使用。此时函数依然是独立存在的。


七、var的作用

JavaScript脚本都可以省略var。但是,某些时候我们要强调是新声明了一个变量,就必须使用var了。

用var 和不用var 的区别:

用var:表示声明一个新的变量。

不用var:如果上下文中该变量存在,直接用已有的变量;如果不存在,才声明一个新的变量。


八、this前缀的作用

当在函数里访问一个变量时;

如果使用this.前缀:

程序只搜索主调对象里是否包含该实例变量;如果不存在,当成undefined处理。

如果没有this.前缀:

A、 程序会先搜索当前函数中是否存在该局部变量;

B、如果A搜索不存在,程序会搜索主调对象中是否存在该实例变量;

C、如果B搜索还不存在,程序会先搜索主调对象所在的对象中是否存在,该实例变量,如果不存在,一直向上,直到window对象为止。


九、总结及注意事项

函数概念比较多,定义的方式比较变态,应该多练习,多写代码才能深入理解,另外,可以看下jQuery的源代码,或者其他开源JS框架的代码。

原创粉丝点击