JavaScript知识点总结-5

本文深入探讨了JavaScript中原型继承的概念,包括原型链、修改构造函数的prototype属性的时机,以及isPrototypeOf()方法的使用。同时介绍了如何验证子类型的prototype,如何扩展内置对象的共用功能,并详细阐述了自定义类型创建的步骤。最后,概述了JavaScript中的继承机制及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:指代当前触发事件的元素对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值