日期:2014-05-16 浏览次数:20418 次
? 随着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)
?