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

javascript全面总结(可能别人看的有点乱,不过多看几遍就习惯了,每个*是一个知识点集合)

javascript全面总结(可能别人看的有点乱,不过多看几遍就习惯了,每个*是一个知识点集合)
2010年07月22日
    javascript全面总结(可能别人看的有点乱,不过多看几遍就习惯了,每个*是一个知识点集合) 收藏
  *
  1.JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序
  2.使用定时函数模仿多线程(还是模拟不了多线程的,只有执行完一个function才会去执行另外一个function)
  *
  1.浏览器中的JavaScript引擎是基于事件驱动的,这里的事件可看作是浏览器派给它的各种任务
  这些任务可以源自JavaScript引擎当前执行的代码块:
  a.如调用setTimeout添加一个任务;
  也可来自浏览器内核的其它线程:
  a.如界面元素鼠标点击事件,
  b.定时触发器时间到达通知,
  c.异步请求状态变更通知等.
  *
  1.GUI渲染线程与JavaScript引擎线程是互斥的(因为JavaScript脚本是可操纵DOM元素,在修改这些元素属性同时渲染界面,那么渲染线程前后获得的元素数据就可能不一致了)
  2.GUI事件触发线程与JavaScript引擎线程是不互斥的(JavaScript脚本的执行不影响html元素事件的触发)
  3.定时触发线程与JavaScript引擎线程是不互斥的(JavaScript引擎是单线程的,处于阻塞线程状态就计不了时,定时事件也是异步事件)
  *
  JavaScript引擎来说,在处理队列中的各任务处理方式都是一样的,只是处理的次序不同而已
  *
  1.ajax异步请求:由浏览器为XMLHttpRequest新开了一个线程
  2.JavaScript引擎始终是单线程运行回调函数,具体点即还是单线程运行onreadystatechange所设置的函数
  *
  JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
  *
  cookie
  1.一个cookie 实际就是一个字符串属性,一次就得到了属于当前文档的所有cookies。
  (当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值)
  2.每个cookie除了 name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。
  3.一个完整的cookie格式  ----  名称=[; expires=][; domain=][; path=][; 安全]  
  (可以用任何顺序设置)
  4.使用js设置cookie格式  ----  document.cookie = "username=" + escape(form.username.value);  
  ( escape() 函数非常重要,因为cookie值里可能包含分号、逗号或者空格。)
  5.使用js读取cookie格式  ----  var allcookies = document.cookie;
  6.设置过期时间(15分钟):
  var expiration = new Date((new Date()).getTime() + 15 * 60000); 
  expires = expiration.toGMTString();
  7.找别人写好的cookie操作类
  8.第1行是Cookie名称。
  第2行是Cookie的值。
  第3行是Cookie所属站点的地址。
  第4行是个标记值。
  第5行为过期时间的低位(时间为Windows下的FILETIME格式)。
  第6行为过期时间的高位。
  第7行为创建时间的低位。
  第8行为创建时间的高位。
  第9行总是为"*",Cookie记录分隔符(一个Cookies文件可以记录多个记录结构)。
  *
  cookie试验结果
  1.document.cookie得到sky@~~local~~[4].txt中的所有记录的名称= (每个"*"代表一条记录)
  2.cookie是根据"名称="中的"名称"来唯一定位sky@~~local~~[4].txt中的记录
  *
  cookie欺骗
  *
  简单数据类型不是对象,所谓"对象化",就是可以将数据和代码组织成复杂结构的能力。
  *
  null与undefined
  1.null是关键字;undefined是Global对象的一个属性;
  2.null是对象(空对象, 没有任何属性和方法),undefined是undefined类型; 
  3对象模型中,所有的对象都是Object或其子类的实例,但null对象例外;
  4.null"等值(==)"于undefined,但不"全等值(===)"于undefined;
  5.运算时null与undefined都可以被类型转换为false,但不等值于false。
  *
  JavaScript的"预编译":在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。
  *
  函数与对象
  1.完全可以把函数当对象来用(function类型的东西都是和object类型一样的东西,这种东西被我们称为"对象")
  2.函数比一般的对象多了一个括号"()"操作符,这个操作符用来执行函数的逻辑
  3.对象量子论,那么答案一定是:波粒二象性!(函数既有对象的性质又有数组的性质)
  *
  对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理
  1.可以将对象当数组以属性名作为下标来访问属性 //alert(anObject["aProperty"]);
  2.可以将对象当数组以方法名作为下标来调用方法 //anObject["aMethod"]();
  3.可以将函数当数组以属性名作为下标来访问属性 //alert(aFunction["aProperty"]);
  4.可以将函数当数组以方法名作为下标来调用方法 //aFunction["aMethod"](); 
  *
  this
  一般编程语言的this就是对象自己,JavaScript中的this并不一定是函数本身所属的对象
  根据this参数,您可以访问到"这个" 对象的属性和方法。(一般对象语言中,方法体代码中的this可以省略,JavaScript不能省略)
  *
  构造函数
  1.可以使用 new 关键字来调用一个构造函数
  2.var object=new functionName();  //new操作符创建了一个对象,紧接着就将这个对象作为this参数调用了后面的函数
  *
  new
  1.var object=new functionName();等同于 
  var object=new functionName;等同于 
  var object=Function(){...};object(); 等同于 
  var object=functionName;object();
  2.我们就可以这样理解,JavaScript先用new操作符创建了一个对象,紧接着就将这个对象作为this参数调用了后面的函数。(JavaScript内部就是这么做的)
  function MyFunc(){};var anObj = new MyFunc(); 等同于
  function MyFunc(){};var anObj = {};MyFunc.call(anObj); //new一对