[关闭]
@delight 2015-01-10T09:16:11.000000Z 字数 1943 阅读 1538

JS学习笔记

javascript js webfront

  1. js协同HTML工作方法:首先必须放在script标签内,然后位置可以在headbody内,也可以放在外置的*.js文件中;如果放在body里面,推荐放到块的最后;
  2. 使用console.log()来记录log;
  3. 使用document.write()来覆盖文档内容;
  4. js的object很像python的dict,但是更为神奇:
  1. a={
  2. test:"1",
  3. ha:3
  4. }

可以直接a.test,这与a["test"]等价,这意味着所有的key必须都是字符串;
5. 未被使用var声明的局部变量直接被升格为全局变量;在HTML中,所有的script元素都隶属于一个window命名空间;
6. js在HTML中主要用于事件回调,常用事件包括onchange, onclick, onmouseover, onmouseout, onkeydown, onload等等,详细列表见这里.
7. js的string也是immuable的,number则不细分,只有一种类型: 64-bit Floating Point;Infinity表示无穷大,而NaN表示不是一个数(C++也有);js对原子类型和对象的划分有点类似java,可以通过Number.xxx来引用某些特殊数值。
8. 内置函数和object方法。内置函数包括:Number()parseFloatparseInt();object方法包括toString(), toExponential(), toFixed(), toPrecision(), valueOf()
9. 操作符与java基本一致;Math对象含有常见的数学运算;Date对象则负责处理日期;
10. js的数组(Array)可以不经分配直接使用,比如a=[];a[3]=5这样;也可以用作堆栈(pop, push)或队列(shift, unshift);可以直接delete其中的数据;可以用splice来插入元素;
11. 数组可以用sort方法进行排序,默认是字母序,可以指定排序函数;
12. 跟string一样,数组可以用concat进行拼接,也可以使用join将数组中的字符串拼接起来;
13. Boolean的判定和python类似;js在进行混合运算时,会自动发生字符串到数值的转换;js有===符号,表示值和类型都相等(因为有自动转换的问题),null==undefined
14. switch语句和C语言一致;for in语句只能用在object中,而且在遍历的时候会遍历原型链中的key,需要使用hasOwnProperty()之类的方法进行过滤,也存在传统的C系条件语句;
15. 可以用label,但是不支持goto,相反可以用break labelcontinue label
16. try..catch..finally类似java,但是catch的异常种类似乎没有细分。
17. js无条件支持正则,将字符串放在//之间就可以表示正则了,字符串有match, search等方法;
18. js会自动将所有声明语句提到最前,因此代码里面甚至可以先使用再声明;由于这个东西很容易造成混乱,所以一般使用"use strict";强制约束使用前先声明。此外,js和c语言很相似:一般将变量全部声明在作用域最前面;
19. js的命名规范类似java,推荐使用小驼峰;
21. 不推荐使用with关键字,不同于python,js的with效果很奇怪;
22. 使用JSON.parse()来将json文本转为js对象,JSON.stringify()来做反向转换;
23. 可以通过function内部再定义function定义类,然后new出对象;function被称为构造器,其prototype对应原型;如果更习惯于类风格的面向对象,可以引入jquery之父写的Class类库;
24. 原型链构成了js的面向对象,一个对象必定有其构造器(constructor)和对应的原型(__proto__),对象的__proto__就是其构造器的prototype


jqeury部分

客户端环境下的js,就是被浏览器解释的js,习惯上使用神器jquery来操作dom元素。由于各家浏览器实现的环境不完全一致(尤其是IE),导致客户端js很难兼容(css和html也一样)。
1. 监听器,浏览器的事件模型是先捕获(capture)然后冒泡(bubble),这是w3c的标准模型。jquery仅支持在冒泡阶段注册监听器(为了兼容),如果想要注册在捕获阶段,只能使用addEventListener手动注册。
2. jquery仅支持css selector,想要使用xpath的话,需要使用其他xpath库。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注