日期:2014-05-16  浏览次数:20418 次

javascript基础复习

? 随着ajax、web2.0、RIA等应用崛起,促进了javascript的发展。现代的javascript开发主要是以面向对象为主,同时代码与具体的应用进行分离,另外Ajax技术得到了非常多的应用。

?

1、代码分离主要体现在四个层面:dom、bom、event、css

2、Reference 引用 一般上是指对象(object)引用, 存放在堆里。String是一个特殊的对象,属于原始对象。

3、函数overload主要体现在两个方面,参数个数(arguments.length) 和类型(typeof), 对象类型也可以通过constructor和instanceof来进行比较。

4、scope 作用域由函数来划分,而不是由块来划分,全局作用域的变量都是window属性。在函数内部没有显示定义的,它就是全局变量。

5、colsure 内层的函数可以引用外层的变量,解决代码混乱,将函数转化成一个更简单的函数。例子:

?? (function()) {

???? var inum = 1;

???? window['jsfn.alert'] = function() {

???????? alert(inum);

???? }

? }()

7、命名空间其实类似于java中的包,如创建jos.fs包,? jos = new Object(); jos.fs = new Object(); jos.fs.User = function() {} 定义一个类,这样类名就不会重复了。

??? 命名空间标准函数,网上找到:

? ?? Namespace = new Object();
?? Namespace.register = function(fullNS)
?? {
??? // 将命名空间切成N部分, 比如Grandsoft、GEA等
??? var nsArray = fullNS.split('.');
??? var sEval = "";
??? var sNS = "";
??? for (var i = 0; i < nsArray.length; i++)
??? {
??????? if (i != 0) sNS += ".";
??????? sNS += nsArray[i];
??????? // 依次创建构造命名空间对象(假如不存在的话)的语句
??????? // 比如先创建Grandsoft,然后创建Grandsoft.GEA,依次下去
??????? sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
??? }
??? if (sEval != "") eval(sEval);
? }

?

8、上下文对象? call, apply转换上下文对象(this)

?