JavaScript实践心得
1、传入参数时要考虑可不可以有默认的情况,比如传入节点默认为document、传入url默认为当前页面url。
2、多个变量只用一个var语句声明;初始化对象时,使用对象字面量的形式。
3、一旦需要更新DOM,不要在循环中将每个元素都插入到文档;通过document.createDocumentFragment()来构建文档片段,在循环外将这个列表添加到文档。
4、将在一个函数中会用到多次的全局对象存储为局部变量。多次用到的对象属性,也应该将其存储为局部变量。
5、避免全局变量和函数,可以创建一个包含它们的对象;避免覆盖全局属性和方法、更方便的检查代码的问题。使用命名空间的使用能确保代码之间的共存。
6、避免与null进行比较,应该使用instanceof 或者 typeof 来更确切地检查类型。
7、最小化访问HTMLCollection对象的次数,当要访问它们的属性或长度时,先定义一个变量存储它们,以下情况会放回HTMLCollection对象:
A、进行对getElementByTagName()的调用; B、获取元素的childNodes、attributes的属性
C、访问了特殊集合、比如document.forms 、 document.images。
8、当要多次用到一个JavaScript未定义的通用操作函数时,可以用已有方法有封装。比如addClass(element, value)、insertAfter(newElement, targetElement)等。
9、document.documentElement.clientWidth(height) || document.body.clientWidth(height)浏览器视口宽度和高度。
clientWidth可见区域的宽度,不包括boder的宽度,如果区域内带有滚动条,还应该减去横向滚动条不可用的高度。
10、div.offsetWidth(height) div的总宽度和高度。 width + border + padding。
11、div.removeAttribute('style')可以去除用div.style添加的样式。
12、querySelect()、querySelectAll() 中的CSS选择器是独立于整个页面的!