js原型继承:js中每个对象都继承自己的原型!
原型链:由多级原型组成的继承关系,就叫原型链
何时修改构造函数的prototype属性:
一个类型希望使用已有对象的现成功能!
修改构造函数的原型可以让对象使用父类型的功能——继承!
语法:子类型构造函数.prototype=new 父类型()
isPrototypeOf()方法:
判断一个对象,是否继承自另一个父类型对象
语法:父类型对象.isPrototypeOf(子类型对象);
判断子类型对象是否继承自父类型对象!
何时使用:如果原型可能已经发生变化,调用子类型方法前,都要先判断原型,再调用方法!
无法获得父元素类型的具体对象时:
"属性" in 对象判断某个属性是否包含在对象的原型链上。
js中的继承总结:
js中的继承都是通过原型对象实现的:父类型.prototype
修改父类型.prototype,可以让类型继承新的对象中的属性和功能
修改prototype的方法:
1. 子类型.prototype=父类型对象
var obj=new 子类型();
2.Object.setPrototypeOf(子类型对象,父类型对象)
验证子类型的prototype:
父类型对象.isPrototypeOf(子类型对象)
验证子类型可用的方法:
"方法/属性名" in 子类型对象
总结:
js中如何自定义类型:
function 构造函数(){
属性;方法
}
创建自定义类型的对象:
var obj=new 构造函数();
一共做几件事?
1. 创建空对象
2. 以构造函数的定义为模板,初始化对象中的属性和方法
3. 设置当前对象的__proto__,指向自己的原型
凡是希望共有的属性都要设置在原型对象中:
构造函数.prototype.共有属性名=值
对象.__proto__.共有属性名=值 X
如何扩展内置对象的共用功能:
内置对象类型.prototype.新方法=function(){}
凡是希望某一个对象独有的属性:
对象.自有属性=值
凡是用prototype属性设置的都是共有属性--唯一办法!
凡是用对象直接设置的属性一定是当前对象独有!
继承:将子类型对象的原型,修改为要继承的父类型对象!
原型继承:一切继承都是通过修改原型对象实现的
如何继承:
1. 使用构造函数,直接修改所有子类型的原型:
子类型构造函数.prototype=父类型对象
必须在创建子类型对象前调用!
2. 直接修改当前子类型对象的__proto__
Object.setPrototypeOf(子类型对象,父类型对象)
Js包含3部分:
ECMAScript(核心语法)+DOM(专门操作网页内容API)
+BOM(专门操作浏览器窗口API)
HTML XML XHTMLDHTML
HTML:描述超文本内容的标记语言
XML:持久化存储格式化数据的标记语言
XHTML:严格的HTML和XML格式标准!
DHTML:实现网页动态效果的所有技术的统称。
HTML css javascript
Window对象:js程序的全局对象,代表当前窗口对象
history对象:当前窗口,本次打开后的浏览历史记录
history控制:前进,后退,刷新
navigator对象:当前浏览器软件的版本和配置信息
document对象:当前正在浏览的页面文件!
网页内容:增删改查
location对象:当前窗口正在浏览的地址
修改location的属性,可以实现打开新网页,仅能替换当前页
screen对象:当前环境的显示器和分辨率
检测当前浏览器的分辨率
event:代表网页中触发的事件对象。
document对象:网页一加载,首先创建document对象
document对象整个网页文档树的根节点
DOM节点树:DOM模型,将网页中的每个元素,属性,内容都当做节点,组成一棵树形结构。
节点之间的关系:父子,兄弟
文档节点:document
元素节点:一对儿HTML标签及其之间包含的子内容
文本节点:HTML中纯文本内容
属性节点:html开始标签中的每个属性都是一个节点
如何查找元素对象:
按id值,查找*一个*元素对象:
varelmObj=document.getElementById("id值");
如果找不到,返回null!尽量先验证,再使用查找结果。
节点信息:
nodeName:一般是找到的标签名。
如果碰到文本节点,nodeName返回#text
*nodeName永远返回全大写字母的标签名*
做判断时,都要先转换大小写,再比较!
nodeType:节点的类型:元素节点:1 文本节点:3
只要判断得到的节点是否正确时,使用nodeName或nodeType
innerHTML:开始标签和结束标签之间包含的HTML文本
*innerHTML:清空父元素下的所有子内容!--最快!
*parent.innerHTML="";
*使用DOM对网页内容的一切修改,都只在内存中临时进行*
网页源文件不变!刷新后页面效果恢复!
textContent:获得开始标签和结束标签之间的文本,自动清除内容中的html标签,变为纯文本内容!
何时使用:1. 确实要获得不带标签的文本内容时
2. 清除当前内容中的样式!
了解:IE8 不支持textContent:先判断是否支持,再调用
if(elmObj.textContent){//说明支持
可用
}else{
替换成innerText
}
在html元素的事件中使用this:指代当前触发事件的元素对象