一散装js知识点
js和java一样也有封装、继承、多态的特性,关于这些特性我们后边再叙述。这里先说一下关于js一些零散的知识点:
- js可以遍历json或者对象:
for (var 变量 in 对象) {
}js方法调用不检查参数类型,不检查参数数量 ,返回值可以是函数
属性提升写法: var a = 1; 不提升写法 a= 1;方法提升写法:function a(){} ;方法不提升 写法:var a = function(){}
this是谁?this关键字永远指向函数(方法)运行时的所有者。
- 以函数的形式调用时,this永远都是window。比如
fun();相当于window.fun(); - 以方法的形式调用时,this是调用方法的那个对象
- 以构造函数的形式调用时,this是新创建的那个对象
- 使用call和apply调用时,this是指定的传递过来的那个对象
- js方法可以看成构造函数,也同时是类名,类体就是构造方法的方法体
- 内置对象:Array、Math、Date等
- js常用事件:onclick 、onmouseover 、onmouseout
- 基本数据类型也有包装类,和java一样自动装包和卸包
二DOM操作
节点分为:标签节点、属性节点、文本节点。他们对应的nodeType 分别是1、2、3。
操作标签节点
获取标签节点 :
- 直接通过document提供的API获取标签节点
document.getElementById("box1")- 通过获取到的节点内的属性获取其他标签节点
获取父节点:节点.parentNode。还可以获取任意节点。创建标签节点:
- 通过document提供的API创建标签节点
document.createElement("标签名");插入标签节点:
父节点.appendChild(新的子节点);
父节点.insertBefore(新的子节点,作为参考的子节点)删除标签节点:
父节点.removeChild(子节点);复制标签节点:
要复制的节点.cloneNode();
要复制的节点.cloneNode(true);不带参数/带参数false:只复制节点本身,不复制子节点。
带参数true:既复制节点本身,也复制其所有的子节点。
操作属性节点
获取属性节点:
标签节点.getAttributeNode("属性名")获取节点属性值:
元素节点.属性名;
元素节点["属性名"]; 元素节点.getAttribute("属性名称");修改、添加节点属性值:
元素节点.属性名=新值;
元素节点["属性名"] = 新值; 元素节点.setAttribute(属性名, 新的属性值);删除节点属性:
元素节点.removeAttribute(属性名);操作文本节点
获取文本:
innerHTML:双闭合标签里面的内容(识别标签)。
innerText:双闭合标签里面的内容(不识别标签)。
document.getElementById("box11").innerHTML
document.getElementById("box21").innerText修改文本:
document.getElementById("box11").innerHTML = 新内容(识别标签)
document.getElementById("box21").innerText = 新内容(不识别标签)获取css属性方式
ele.style.width或者 ele.style["width"];缺点是只能获取或者赋值行内样式,如果像样获取class中写的样式怎么获取呢?
function getStyle(ele, attr) {
if (window.getComputedStyle) {
return window.getComputedStyle(ele, null)[attr];
}
return ele.currentStyle[attr];
}这个方法不管行内还是class中的css样式属性值都可以获取的到。
三DOM的事件传递过程
js事件传递分为捕获阶段、目标阶段、冒泡阶段。
捕获阶段就是:从外向内传递的过程。
冒泡阶段就是:内向外传递的过程。
目标阶段:事件在点击目标标签的时间段。
并且他们如果同时设置调用顺序是:先调用父标签捕获,再调用子标签捕获,先调用子标签冒泡,后调用父标签冒泡,特殊情况是在目标阶段:冒泡和捕获,谁的代码在前边谁先执行。
Event是一个事件函数内置对象,他包含了点击事件的所有信息,并且可以调用Event.stopPropagation()对事件进行拦截。
四BOM
window对象是BOM的顶层(核心)对象,BOM中有一些开发者需要知道的属性和方法如下:
方法:
window.alert(); //不同浏览器中的外观是不一样的弹窗window.open(url,target,param)//打开一个新窗口window.close()//关闭自己的窗口对象:
location对象:location.reload()重新加载
navigator对象:userAgent属性:系统,浏览器
history对象:
后退:
history.back()
history.go(-1):0是刷新
前进:
history.forward()
history.go(1)