JavaScript中的对象:
可以创建并使用的对象分为以下三种:
1、本地对象
2、内置对象
3、宿主对象
一. 内置对象:
1、JS已经预先定义好的可供我们直接使用的对象,这些对象通常不受浏览器的限制
2、Array、Boolean、Data、Math、Number、String、RegExp、Function、Events
1.数组API:
1、作用:在单个变量中存储多个值,用于存放一组数据
2、元素:数组空间中存放的数据
3、长度:数组中元素的个数------length
4、下标(索引):数组元素的编号(编号从0开始到length-1结束)
5.创建数组的方式:
1、var array = [ ]; //定义一个空的数组
2、var array = new Array[ ] //调用构造函数的方式创建一个数组
3、var array = [ init1, init2 ,init3……] //在定义数组的同时给定初始值
4、var array = new Array[ init1, init2 ,init3……]
5、var array = new Array(size) //给定指定长度的数组
6.常规操作:
1、数组引用:通过数组下标来实现元素的引用
数组名[index]//index为数组下标,从0开始
2、数组遍历:将数组中每个元素都穷举一次进行使用
a、普通循环结构 //for循环
b、for - in(多用于数组或对象的遍历)
3.添加:
头:array.unshift(p1……) //返回新数组的长度
尾:array.push(p2……)
指定索引:array.splice(index,howmany,p3,p4……) //index表示指定索引;
//第二个位置表示要删除元素的个数,元素添加时值恒为0
4.删除:
头:array.shift() //返回删除的那个元素
尾:array.pop()
指定索引:array.splice(index,howmany)
5.连接:
array.concat(arr1):连接多个数组并返回新数组,原数组不受影响
array.join(“连接符”):使用指定分隔符(默认为逗号)连接数组中的 元素,返回连接后的字符串内容,原数组不受影响
6.排序:
array.reverse() //原数组逆序,原数组会受影响
array.sort() //升序排序,原数组会受影响
2,字符串API:
1、作用:处理字符序列,可以看作是字符数组
2、创建:
var str = “abc”;
var str = new String(“abc”);
注意: 第一种方式创建的字符串,类型为"string"; 第二种方式创建的字符串,类型为"object"
基本类型玉引用类型的数据保存在内存中的分配空间结构不一致。
基本类型没有属性/方法,引用类型才有属性/方法;
3.常用操作:
1.查找:
str.charAt(index):返回指定索引位置的字符
str.indexOf(search):查找子字符串在原字符串第一次出现的索引
str.lastIndexOf(search):查找子字符串在原字符串最后一次出现的索引
2.转换:
str.charCodeAt(index):返回指定索引位置的字符编码
String.fromCharCode(num):将指定的编码转换为字符串
str.toUpperCase():转换为大写
str.toLowerCase():转换为小写
3.连接:
str.concat():连接两个字符串
4.匹配:
str.match()
str.search()
str.replace(regexp/substr,replacement) ---- 替换,一般进行词的过 滤,原字符串不受影响,会返回替换后的新字符串
5.匹配:
str.split():将字符串以指定的分割符,并返回分割后的数组
6.截取:
str.slice(start[,end])
str.substring(start[,end])
str.substr(str[,len]) ----不推荐使用
3.Date对象:
1、作用:用于处理日期和时间
2、创建:
var date = new Date(); ---获取当前系统时间
var date = new Date(milliseconds); ---传递参数的毫秒是相对 1970-1-1 0:0:0以来的毫秒值
var date = new Date(“yyyy-MM-ddTHH:MM:SS”) --创建字符串所指 定的日期时间
var data = new Date(year,month[,day[,hour[,minutes[,seconds[,milliseconds]]]]])
4.Boolean对象:
1、作用:表示两个值,true或false
2、创建:
new Boolean(value); ---使用构造函数
Boolean(value); ---使用转换函数
5.Number对象:
1、作用:原始数值的包装对象
2、创建:
var num = new Number(value); --对象
var num = Number(value); --数字
6.Math对象:
1、作用:用于执行与数学相关任务
2、在使用时,由于无构造函数,不需要重新创建;Math中的所有的方法和属性都是直接调用的
Math.random()
Math.floor()
Math.sin()
7.JSON对象(ES5标准新增对象):
1.定义:javascript objcct notation,javascript对象表示法
2.作用:用于数据存储和交换的文本格式
3.JSON可以表示的数据:所有的JS值
4.主要方法:
JSON.parse():将字符串解析为JS值
JSON.stringify():将JS值转换为对应格式的字符串
8.Events对象:
略
9.Event对象:
略
二.宿主对象之 BOM:
1、Browser Object Model(浏览器对象模型)
2、作用:使得Javascript有能力与浏览器进行“对话”
3、Window对象:代表的是一个浏览器打开的窗口
3.1 .window相关对象属性:
1、location:与URL相关
2、history:与访问历史有关
3、document:与文档有关
4、navigator:与浏览器自身相关
5、window代表Window对象本身
6、Window作为浏览器最顶层的对象,调用时可以省略“Window.”的写法
2.location属性对象:
1、URL: 统一资源定位符 规则:协议://主机名:端口/资源路径名称?查询字符串#hash
2、reload():重新加载刷新
3、assign(URL):加载新的文档,实现跳转
4、replace(URL):用新的文档替换当前文档,也可以实现跳转
3.history属性对象:
1.length:长度,即history只知道历史条数
2、方法:
back()---后退一页
forword()---前进一页
go(n)---前进或后退
4.document属性对象:
1、指代浏览器打开的整个文档
2、与DOM操作相关
5.navigator属性对象:
1、与浏览器自身信息相关
2、属性:
appName:浏览器名称
appCodeName:浏览器代码名
appVersion:浏览器版本号
userAgent:客户机发送服务器的user-agent头部值
6.screen属性对象:
1、包含有关客户端显示屏幕的信息
2、像素:相对?绝对?
7.name属性对象:
设置或返回窗口的名称
8.opener对象:
返回对创建此窗口的引用
3.2 window方法:
alert()
prompt() //提示
confirm(“提示框”)----确认框,确认=true,取消=false
open(URL)----新开一个窗口打开URL
close()----关闭当前窗口
计时器相关方法:
1、setTimeout(function,time):time的单位为毫秒,在指定时间到达后执行一次function函数
2、setInterval(function,time):time的单位仍为毫秒
3、clearInterval(id):id表示计时器标识
4、clearTimeout():
事件轮询: (JS是单线程执行的应用程序)
通过压栈,以及 任务队列 的方式,使得一个方法块中的代码实现 类似于 异步的效果。
即 在 代码 层面进行 执行逻辑的切分。 这是与 java 极其不一样的地方。因为java 具有多线程特性,因此很好的处理该问题。
注意:setTimeout(function,time)和setInterval(function,time)中的time值为理想值,即时间到了也不一定会立即执行function函数。
三,宿主对象之DOM:
1.组成:
核心DOM
HTML DOM
CSS DOM
2.document对象:
指代在浏览器窗口中打开的文档
3.节点类型:
元素节点(element)
属性节点(attribute)
文本节点(text)
文档类型节点(DOCTYPE)(不常用)
注释节点(不常用)
4.元素查找方式:
document.getElementById()----根据元素的id属性值查找元素,若id值重复,则只会查找到第一个id值。若id不存,则返回NULL。
document.getElementsByTagName()----根据元素的标签名查找元素,返回的是一个集合对象。
document.getElementsByClassName()----根据元素的class类名查找元素,返回的是一个集合对象。(ES5新增的方法)
document.getElementsByName()----根据元素的name属性查找元素,常用在表单元素中
5.元素创建:
var element=document.createElement(“tagname”):创建一个标签
添加属性:
a、element.setAttribute(“name”,”value”); -----核心DOM的操作
b、element.<attributeName>=value; ----CSS DOM的操作
c、要设置class属性,需要使用className属性来设置
元素内部内容:
element.innerHTML----内部HTML文本
element.innerText----内部纯文本内容
添加到容器中:
a、parentNode.appendChild(childNode)----添加到父容器末尾.
b、parentNode.insertBefor(newNode,existNode)----在已有元素之前进行添加
6.元素删除:
parentNode.removeChild():从父元素移除子元素
7.节点克隆:
node.cloneNode(boolean):节点克隆只是把节点克隆下来,仍然需要添加到相应元素中,还需要对节点内容进行手动更新。
boolean=True:克隆包括所有后代节点在内的节点
boolean=False:仅克隆节点本身(默认值)
8.DOM树层次:
node.parentNode----父节点
element.firstChild----第一个孩子
element.lastChild----最后一个孩子
element.childNodes----所有孩子节点(包括所有空白的文本节点)
element.children----所有孩子元素节点
element.firstElementChild----第一个孩子元素节点
element.lastElementChild----最后一个孩子元素节点
node.previousSibling----节点的前一个兄弟节点
node.nextSibling----节点的后一个兄弟节点
node.previousElementSibling----前一个兄弟元素
node.nextElementSibling----后一个兄弟元素
9.节点属性:
nodeName
文本节点固定为:#text
元素节点为:大写状态标签名,如DIV
nodeType
1---元素节点
2---属性节点
3---文本节点
nodeValue
文本节点:文本内容本身
元素节点:固定为null
this --- 在事件函数中指向事件源对象
10.CSS DOM:
获取CSS样式
element.sytle----返回CSSStyleDeclaration对象,该对象包含了该元素的所有属性,只能拿到内嵌的CSS样式。 element.style.attribute----获取某个内嵌的CSS样式,若样式中间用‘-’连接,则将‘-’省略而将后一个单词首字母大写。例如,获取字体 则应该使用element.sytle.fontSize来获取。
getComputedStyle(element)----获取element元素的正在起作用的CSS样式,包括内联或外联或内嵌的。(存在兼容问题,IE9之前 不支持使用,使用element.currentStyle属性来获取正在起作用的样式)
设置CSS样式
通常是将需要设置的CSS样式以内嵌方式添加到元素的style属性中,然后对element.style.attribute=xxxx的形式进行重新赋值。