JavaScript高级程序设计(第三版)学习,第一次总结
Array类型
var arr = [];
arr.length; //返回数组元素个数
检测数组
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类型
- 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类型
- 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特性的所有元素
特殊集合
- document.anchors:所有带有name特性的<a>
- document.applets:所有<applets>
- document.forms:所有<form>
- document.images:所有<img>
- document.links:所有带href的<a>
Element类型
- id:在文档中的唯一标识符
- title:有关元素附加说明,一般通过工具提示条显示出来
- lang:元素内容语言代码,很少使用
- dir:语言方向,tlr(左向右),rlt(右向左),很少使用
- className:与元素class对应,为元素指定的CSS类
取得特性
- getAttribute():注意:传递的特性名与实际特性名相同,因此要得到class特性,要传递"class",而不是"className",也可以取得自定义特性,特性是不区分大小写的注:通常通过对象属性来访问特性,只有取得自定义特性才使用getAttribute方法
- setAttribute():接收两个参数,要设置的特性名和值。已存在,替换,不存在,创建。设置的特性名会统一转换为小写。
- removeAttribute():接收特性名。清楚特性值,并删除特性。
attributes属性
- element.attributes.getNamedItem("id"):返回nodeName属性等于id的节点,简写:element.attributes["id"]
- element.attributes.removeNamedItem("id"):移除nodeName属性等于name的节点
- element.attributes.setNamedItem(node):很不常用的方法,为元素添加特性。
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属性
元素子节点
Text类型
- 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类型
CDATASection类型
DocumentType类型
DocumentFragment类型
Attr类型
JavaScript高级程序设计(第三版)学习,第一次总结的更多相关文章
- JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈
null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...
- JavaScript高级程序设计第三版.CHM【带实例】
从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...
- javascript高级程序设计第三版书摘
在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...
- 22.1 高级函数【JavaScript高级程序设计第三版】
函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- 21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】
IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLH ...
- 20.2 解析与序列化【JavaScript高级程序设计第三版】
JSON 之所以流行,拥有与JavaScript 类似的语法并不是全部原因.更重要的一个原因是,可以把JSON 数据结构解析为有用的JavaScript 对象.与XML 数据结构要解析成DOM 文档而 ...
- 10.1.2 Document类型【JavaScript高级程序设计第三版】
JavaScript 通过Document 类型表示文档.在浏览器中,document 对象是HTMLDocument(继承自Document 类型)的一个实例,表示整个HTML 页面.而且,docu ...
- 2.1 <script>元素【JavaScript高级程序设计第三版】
向 HTML 页面中插入 JavaScript 的主要方法,就是使用<script>元素.这个元素由 Netscape 创造并在 Netscape Navigator 2 中首先实现.后来 ...
- 14.5 富文本编辑【JavaScript高级程序设计第三版】
富文本编辑,又称为WYSIWYG(What You See Is What You Get,所见即所得).在网页中编辑富文本内容,是人们对Web 应用程序最大的期待之一.虽然也没有规范,但在IE 最早 ...
随机推荐
- DOS命令关闭进程
1.开始-运行,输入cmd后回车; 2.在DOS提示符下,先用命令 tasklist 回车来获取进程的 PID(例如获取了Explorer.EXE进程的PID为1988); 3.然后再输入命令:tas ...
- HDU-4655 Cut Pieces 数学,贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4655 先不考虑相临的有影响,那么总数就是n*prod(ai),然后减去每个相邻的对总数的贡献Σ( Mi ...
- ClassLoader, JavaAgent, Aspectj Weaving一站式扫盲帖
最近工作里复习的Class Loader基础知识集锦,写下来希望对别人有帮助,而且不止是为了撂倒面试官. 为了尽量简单明了容易背,有些部分写得比较干. 0. 参考资料: 书:<深入了解Java虚 ...
- excel 的一些操作
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- 好的 ASP.Net网站、博客
1.优秀的个人技术博客 http://www.tracefact.net/Asp-Net/
- C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...
- 【UML】——为什么要使用UML
以前一提到UML,就想到了复杂的流程图.很敬佩哪些想想就能画出整个系统的UML图的人,因为他们头脑中有整个软件架构的蓝图,这样在编写实现的时候,就会知道哪个地方改怎么做,哪个地方如何扩展. 而想成为架 ...
- spring jdbcTemplate源码剖析
本文浅析 spring jdbcTemplate 源码,主要是学习其设计精髓.模板模式.巧妙的回调 一.jdbcTemplate 类结构 ①.JdbcOperations : 接口定义了方法,如 &l ...
- maven依赖传递关系
一.maven 依赖传递规则 举个例子,比如A依赖B,B依赖C,那么A也是依赖C的.A是对B的直接依赖,A对C是传递依赖 ①.最短路劲原则 如,路劲一:A依赖B,B依赖C,C依赖D(1.0.0): 路 ...
- 基础数据结构 之 树(python实现)
树是数据结构中常用到的一种结构,其实现较栈和队稍为复杂一些.若树中的所有节点的孩子节点数量不超过2个,则该为一个二叉树.二叉树可用于查找和排序等.二叉树的主要操作有:建树,遍历等.遍历是树中的一个最为 ...