Array类型

var arr = [];
arr.length; //返回数组元素个数
改变length可以动态改变数组大小

检测数组

instanceof可以检测某个对象是否是数组,限制:只能是一个网页或一个全局作用域
Array.isArray(arr);          //最终确定某个值到底是不是数组,没有限制

转换方法

arr.toString();                   //返回由数组每个值的字符串形式拼接而成的以逗号分隔的字符串
arr.valueOf(); //与toString方法一致
arr.toLocalString(); //一般情况与toString和valueOf值一致,重定义则不一定

注:toString方法会去调用每个值的toString方法,toLocaleString会去调用每个值的toLocaleString方法

arr.join("-");                    //以传入的字符串当做分隔符,返回字符串,不传值,以逗号分隔

栈方法

arr.push(arg1,arg2,arg3....);               //接收不限量的参数,按顺序添加到数组末尾,返回修改后数组的长度
arr.pop(); //返回数组最后一项,并移出数组

队列方法(需和栈方法组合)

arr.shift();                                             //移除数组第一项,并返回被移除项
arr.unshift(arg1,arg2,arg3....); //在数组前端添加任意项,并返回改变后数组长度

重排序方法

arr.reverse();                                        //反转数组
arr.sort(); //将数组每一项都转成字符串形式,进行比较,升序排列
arr.sort(function(){}); //接收一个函数作为参数,根据函数返回值排序,前一项排在后一项后面,返回1,排在前,返回-1

操作方法

arr.concat(arg1,arg2,arg3,.....);          //不限制传入数量,可以是数组,可以是字符串,可以是数值
arr.slice(arg1,arg2); //接收两个参数,要返回的起始项(可选)和结束位置(可选),不传最后一个参数,返回从起始项到数组末尾,不传参数,返回整个数组
arr.splice(arg1,arg2,arg3); //arg1删除的第一项的位置,arg2删除的项数,arg3,可以是任意数量的字符串,用于删除后插入

位置方法

arr.indexOf(arg1,arg2);                         //arg1查找的项,arg2查找起点(可选),从头查找,找到返回位置索引(以位置0开始),未找到返回-1
arr.lastIndexOf(arg1,arg2); //与indexOf相反的查找方向,参数数量,意义一致

迭代方法

arr.every(function(){});                            //对数组每一项运行参数函数,都返回true,才为true
arr.filter(function(){}); //对数组每一项运行参数函数,返回函数返回true的数组成员
arr.forEach(function(){}); //对数组每一项运行参数函数,没有返回值,改变数组元素
arr.map(function(){}); //对数组每一项运行参数函数,返回每次函数调用的结果组成的数组
arr.some(function(){}); //对数组每一项运行参数函数,只要有一项返回true,返回true
function(item,index,array){} //参数函数,接收三个参数:数组项的值,该项在数组的位置,数组对象本身

归并方法

arr.reduce(function(){},initValue);               //迭代数组所有项,构建一个返回值,从数组第一项开始
arr.reduceRight(function(){},initValue); //迭代数组所有项,构建一个返回值,从数组最后一项开始
function(prev,cur,index,array){} //参数函数,四个参数:前一个值(由前一次函数结果来确定),当前值,项的索引,数组对象
initValue //可选

DOM

Node类型

nodetype属性:节点类型,nodeName属性:节点名称,nodeValue属性:节点值
每个节点都有childNodes属性,保存NodeList对象,动态对象,有length属性,可以使用item()方法和方括号法访问。
  • parentNode属性,指向文档树父节点。
  • previousSibling属性:同一列表前一个节点
  • nextSibling属性:同一列表后一个节点
  • firstChild属性:第一个子节点
  • lastChild属性:最后一个子节点
  • ownerDocument属性:指向整个文档的文档节点
  • hasChildNodes(node):在节点包含一个或多个子节点返回true
  • someNode.appendChild(newNode):在最后一个子节点之后加入节点
  • someNode.insertBefore(newNode,node):在参照节点之前插入节点,参照节点为null,结果与appendChild方法一致
  • someNode.replaceChild(newNode,node):替换节点
  • someNode.removeChild(node):移除节点
  • someNode.cloneNode(Boolean):复制,true深复制,复制这个节点及子树,false浅复制,只复制本节点
  • normalize();处理文档树中的文本节点,合并用的

Document类型

js用以表示文档,是整个文档,不是部分,即document对象
  • document.documentElement属性:指向<html>
  • document.body属性:指向<body>
  • document.doctype:指向<!DOCTYPE>
  • document.title:指向<title>
  • document.URL:页面完整URL
  • document.domain:域名,可设置,同一域
  • document.referrer:保存着链接到当前页的那个页面的URL

查找元素

  • getElementById:接收一个参数,要取得的元素的ID,严格按照大小写匹配,多个id相同,返回第一个元素
  • getElementByTagName:接受一个参数,要取得的元素标签名,返回NodeList,在HTML文档中返回HTMLCollection对象,动态集合,可以使用item()方法或方括号法访问元素。
  • HTMLCollection对象,还有一个方法,namedItem,可以使用这个方法通过元素的name特性取得集合中的项。
  • getElementsByName():HTMLCollection类型才有的方法。返回给定name特性的所有元素

特殊集合

都是HTMLCollection对象
  • document.anchors:所有带有name特性的<a>
  • document.applets:所有<applets>
  • document.forms:所有<form>
  • document.images:所有<img>
  • document.links:所有带href的<a>

Element类型

所有HTML元素都是HTMLElement类型,不然也是通过它的子类型表示。
特性:
  • id:在文档中的唯一标识符
  • title:有关元素附加说明,一般通过工具提示条显示出来
  • lang:元素内容语言代码,很少使用
  • dir:语言方向,tlr(左向右),rlt(右向左),很少使用
  • className:与元素class对应,为元素指定的CSS类

取得特性

  • getAttribute():注意:传递的特性名与实际特性名相同,因此要得到class特性,要传递"class",而不是"className",也可以取得自定义特性,特性是不区分大小写的注:通常通过对象属性来访问特性,只有取得自定义特性才使用getAttribute方法
  • setAttribute():接收两个参数,要设置的特性名和值。已存在,替换,不存在,创建。设置的特性名会统一转换为小写。
  • removeAttribute():接收特性名。清楚特性值,并删除特性。

attributes属性

Element类型是唯一使用attributes属性的唯一一个DOM节点类型
attributes属性中包含一个NamedNodeMap,动态集合。元素每个特性都由一个Attr节点表示,每个节点保存在NamedNodeMap对象中,对象拥有的方法:
  • element.attributes.getNamedItem("id"):返回nodeName属性等于id的节点,简写:element.attributes["id"]
  • element.attributes.removeNamedItem("id"):移除nodeName属性等于name的节点
  • element.attributes.setNamedItem(node):很不常用的方法,为元素添加特性。
attributes的方法不够方便,更多的会使用getAttribute,setAttribute,removeAttribute方法。序列化倒是有用:
function outputAttribute(element){
var pairs = new Array(),
attrName,
attrValue,
i,
len; for(i=0,len=element.attributes.length;i<len;i++){
attrName = element.attributes[i].nodeName;
attrValue = element.attributes[i].nodeValue;
pairs.push(attrName += "=\"" + attrValue + "\"");
} return pairs.join(" ");
}

由于IE7及更早版本会返回HTML中所有可能的特性,所以对上述函数加以改进,让它返回指定特性。每个特性节点都有一个specified属性,为true,要么在HTML中指定了相应特性,要么通过setAttribute设置。改进后代码:

function outputAttribute(element){
var pairs = new Array(),
attrName,
attrValue,
i,
len; for(i=0,len=element.attributes.length;i<len;i++){
attrName = element.attributes[i].nodeName;
attrValue = element.attributes[i].nodeValue;
if(element.attributes[i].specified){
pairs.push(attrName += "=\"" + attrValue + "\"");
}
} return pairs.join(" ");
}

创建元素

  • document.createElement():接收一个参数,要创建的元素标签名,在HTML中不区分大小写,在XML区分,创建时也添加了ownerDocument属性

元素子节点

元素的childNodes属性包含了它的所有子节点。

Text类型

包含的是纯文本内容,可以包含转义后的HTML字符,通过nodeValue或data获得文本内容
操作节点中文本的方法:
  • appendData(text):将text添加到节点末尾
  • deleteData(offset,count):从offset指定的位置开始删除count个字符
  • insertData(offset,text):从offset指定位置开始插入text文本
  • replaceData(offset,count,text):从offset指定位置开始的count字符替换为text
  • splitText(offset):从offset开始将文本分成两个节点
  • subStringData(offset,count):提取从offset开始到offset+count为止的字符串
  • length属性,保存节点中的字符数,nodeValue.length,data.length也保存同样的值

创建文本节点

  • document.createTextNode():接收一个参数,要插入节点中的文本,需要按照HTML或XML格式进行编码,创建时也会加入ownerDocument属性

规范化文本节点

  • normalize方法。在父元素上调用,会合并所有文本节点。

分割文本节点

  • splitText方法,将一个文本节点分为两个

Comment类型

注释在DOM中通过Comment类型表示,与Text继承相同基类,拥有除splitText方法的所有字符串操作方法,与Text类似可通过nodeValue和data获得注释内容

CDATASection类型

针对XML文档,表示CDATA区域

DocumentType类型

并不常用,仅有Firefox,Safari,Opera支持。
保存在document.doctype中

DocumentFragment类型

文档片段。所有节点类型中,只有DocumentFragment没有对应标记。可以作为仓库使用。
使用document.createDocumentFragment()来创建文档片段,继承了Node的所有方法

Attr类型

元素特性在DOM中以Attr类型表示
属性:name(特性名称),value(特性值,与nodeValue值一样),specified(布尔值,是否代码中指定)
使用document.createAttribute()并传入特性名称可以创建新的特性节点
 
以上是为个人这一段时间以来学习JavaScript高级程序设计(第三版)的一些总结,还有很多的不足,欢迎大家共同探讨!

JavaScript高级程序设计(第三版)学习,第一次总结的更多相关文章

  1. JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈

    null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...

  2. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  3. javascript高级程序设计第三版书摘

    在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...

  4. 22.1 高级函数【JavaScript高级程序设计第三版】

    函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...

  5. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  6. 21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】

    IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLH ...

  7. 20.2 解析与序列化【JavaScript高级程序设计第三版】

    JSON 之所以流行,拥有与JavaScript 类似的语法并不是全部原因.更重要的一个原因是,可以把JSON 数据结构解析为有用的JavaScript 对象.与XML 数据结构要解析成DOM 文档而 ...

  8. 10.1.2 Document类型【JavaScript高级程序设计第三版】

    JavaScript 通过Document 类型表示文档.在浏览器中,document 对象是HTMLDocument(继承自Document 类型)的一个实例,表示整个HTML 页面.而且,docu ...

  9. 2.1 <script>元素【JavaScript高级程序设计第三版】

    向 HTML 页面中插入 JavaScript 的主要方法,就是使用<script>元素.这个元素由 Netscape 创造并在 Netscape Navigator 2 中首先实现.后来 ...

  10. 14.5 富文本编辑【JavaScript高级程序设计第三版】

    富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得).在网页中编辑富文本内容,是人们对Web 应用程序最大的期待之一.虽然也没有规范,但在IE 最早 ...

随机推荐

  1. DOS命令关闭进程

    1.开始-运行,输入cmd后回车; 2.在DOS提示符下,先用命令 tasklist 回车来获取进程的 PID(例如获取了Explorer.EXE进程的PID为1988); 3.然后再输入命令:tas ...

  2. HDU-4655 Cut Pieces 数学,贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4655 先不考虑相临的有影响,那么总数就是n*prod(ai),然后减去每个相邻的对总数的贡献Σ( Mi ...

  3. ClassLoader, JavaAgent, Aspectj Weaving一站式扫盲帖

    最近工作里复习的Class Loader基础知识集锦,写下来希望对别人有帮助,而且不止是为了撂倒面试官. 为了尽量简单明了容易背,有些部分写得比较干. 0. 参考资料: 书:<深入了解Java虚 ...

  4. excel 的一些操作

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  5. 好的 ASP.Net网站、博客

    1.优秀的个人技术博客 http://www.tracefact.net/Asp-Net/

  6. C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

    类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...

  7. 【UML】——为什么要使用UML

    以前一提到UML,就想到了复杂的流程图.很敬佩哪些想想就能画出整个系统的UML图的人,因为他们头脑中有整个软件架构的蓝图,这样在编写实现的时候,就会知道哪个地方改怎么做,哪个地方如何扩展. 而想成为架 ...

  8. spring jdbcTemplate源码剖析

    本文浅析 spring jdbcTemplate 源码,主要是学习其设计精髓.模板模式.巧妙的回调 一.jdbcTemplate 类结构 ①.JdbcOperations : 接口定义了方法,如 &l ...

  9. maven依赖传递关系

    一.maven 依赖传递规则 举个例子,比如A依赖B,B依赖C,那么A也是依赖C的.A是对B的直接依赖,A对C是传递依赖 ①.最短路劲原则 如,路劲一:A依赖B,B依赖C,C依赖D(1.0.0): 路 ...

  10. 基础数据结构 之 树(python实现)

    树是数据结构中常用到的一种结构,其实现较栈和队稍为复杂一些.若树中的所有节点的孩子节点数量不超过2个,则该为一个二叉树.二叉树可用于查找和排序等.二叉树的主要操作有:建树,遍历等.遍历是树中的一个最为 ...