zoukankan      html  css  js  c++  java
  • JavaScript&DOM

    前段时间看了一本关于JavaScript和DOM的书,初步整理了一点知识点,不完善,后面再加。纯私人整理,有错误欢迎指出。

    1. 永远不要假设ajax(javascript)一定可用。
    2. W3C推出的标准化DOM可以让任何一种程序设计语言 对 使用任何一种标记语言编写出来的 任何一份文档 进行操控。
    3. DOM:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容。
    4. 用javascript编写的代码必须通过HTML/XHTML文档才能执行。
    5. 程序设计语言分为解释型和编译型两种:编译型需要编译器,如java和C++这种。解释型web中的javascript解释器将直接读入并执行源代码。
    6. js是弱类型语言:可以在任何阶段改变变量的数据类型。用单引号和双引号都可以。
    7. 可以把三种数据类型混在一起存入一个数组
            var lennon = ["john" , 1980 , false];
         数组中的任何一个元素都可以把一个数组当做他的值。
    8. 传统数组会自动匹配下标,但是也可以定义下标,不局限与整数,这样增加了可读性(a["name"] = "John"),但是不推荐这样,因为相当于在修改Array的属性,这样不如用Object。
    9. Object还是不错的,a.name = "John",还可以beatles.vocalist.name = "John"。
    10. DOM的基本构成是元素节点。
    11. 继承是CSS技术中心的一项强大的功能,节点树上的各个元素将继承其父元素的样式属性。
    12. typeof操作符可以告诉我们他的操作数是一个什么类型的。
    13. 刚刚实验了 一下,新增的getElementsByClassName(),可以通过类名获取元素,参数中的类名可以少于实际类的个数和顺序,而且可以组合使用,ById,ByTagName,不局限与只用document。
    14. 用typeof判断的getElementById,getElementsByTagName等这些都是object类型,ByTagName和ByClass是对象数组,Array返回的也是object类型。
    15. if(something) 与 if(something != null) 完全等价。
    16. setAttribute完成两步:1)创建属性 2)设置值 ; 此方法刷新DOM,但是不改变静态页面。
    17. 用DOM可以避免一些兼容性问题,因为DOM是适用于多种环境和多种语言的通用API。
    18. function (object) {} 当前节点为参数时,用this代指,对于onclick事件处理函数,可以用return false 阻止默认事件的发生
    19. window.onload = <函数名>; 加载函数<函数名>
    20. <p>this is a jok <p/> 这里引入一个nodeValue的概念,就是节点值,如果要指向<p>标签中的文本,要指向<p>标签的一个子元素节点的文本,而不是<p>的文本。
    21. nodeValue用于检索节点的值&设置节点的值
    22. 平稳退化:禁用JS时,不影响基本使用
            1)用"javascript"伪协议&内嵌事件处理函数<onclick="">的做法不好。
            2)给事件加一些真实值。比如将<a>中的href值设置为真实值,这样,即使js被禁用,功能依然能用,只不过用户体验差一点。
    23. 分离JavaScript:把内嵌事件处理函数也放到外部文件中去,这样就能在外部文件中将js事件添加到HTML文件中的元素中。【我猜想JQuery中的 $().on();是一种javascript分离。】
    24. 向后兼容:这里有一个概念叫对象检测。if(!document.getElementById) return false ; 用逻辑非判断,方法体简单明了。判断对象是<方法名>,不能是<方法名>(),这样返回的是方法的结果。
    25. 性能考虑:脚本对Web应用的影响
            1)尽量少访问DOM和减少标记,在多个函数都会取得一组类似元素的情况下,考虑重构代码,把搜索的结果存放在一个全局变量中;把一组元素直接以参数的形式传递给函数。
            2)尽量减少不必要的标记。
            3)减少页面加载时发送的请求数量,尽量将js合并,放在<body>的结尾处。
            4)压缩脚本,将不必要的空格和注释删除,生成min版本。
    26. get/setAttribute方法是元素节点调用,来配置和获取属性节点的值。
    27. nodeValue是配置和获取文本节点的值。
    28. childNodes:我试过了,书上说会获取所有的子节点,但是只有元素节点和文本节点,文本节点多包在元素节点两侧,由空格和回车引起的。
    29. createElement:创建元素节点
            appendChild:插入DOM树中
           createTextNode:创建文本节点
           nextSibling:下一个子节点
            insertBefore:在某节点之前插入
    30. XMLHttpRequest:脚本与服务器之间的中间人,JS可以通过这个对象来发送请求和处理相应。对象返回里面有两个属性,一个是responseText,保存的是文本,一个是responseXML,保存的是DocumentFragment对象。脚本中的ajax不会等待send的响应,而是会继续执行。
    31. 属性节点和文本节点的子元素不允许是元素节点。
    32. 文档中的每个元素都是一个对象,每个元素都有一个style属性,他们也是一个对象。


  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/embraceU/p/9235321.html
Copyright © 2011-2022 走看看