问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js里面的继承该怎么理解,原型链是什么概念,这方面的内容很重要么

发布网友 发布时间:2022-04-22 09:47

我来回答

3个回答

热心网友 时间:2022-04-22 11:16

简单来说 继承 就是一个类B 是由另一个类 A 继承来的, 那么 B在一开始就拥有了A 的所有属性和方法, 类B 自己在增加一些属性和方法 后 后来的类C 继承自类 B , 那么 类 C 一开始 就拥有了 类A 的 所有属性和方法 和 类 B 新加的属性和 方法 , 同理 继承类c 的的 也拥有 a b c 的属性和方法 ;

上例中 : c 是D的原型 , B 是 C的原型 , A 是B 的原型 , 这就是原型链 .
这方面的内容 很重要; 因为在程序开发中 要完成一个复杂的功能 都是把复杂的功能分解成一个个简单的小块 , 一路继承下去 直到完成所有功能,
比如说要接收一篇文章, 首先做出一个类A 来接收一个字母 , 再 是类B 接收 一个单词, 接下来一个类 C 接受一行, 最后是类 D 接受整片文章.

热心网友 时间:2022-04-22 12:34

先来看一下原型
JavaScript的所有function类型的对象都有一个prototype属性,这个prototype属性本身
是一个object类型的对象,因此我们也可以给这个prototype对象添加任意的属性和方法。
先看以下代码
<script type=”text/javascript”>
Person = function(){
this.name = “jack”;
};
Person.prototype.name = “rose”;
p = new Person();
alert(p.name);//输出jack
delete p.name;
alert(p.name);//输出rose

</script>
由此可见当我们调用p.name时首先到p对象内部去查找name属性如果没有就去p对象的原型(prototype)中去查找name属性再来看以下代码
<script type=”text/javascript”>

Person = function(){
this.name = "jack";
};
Employee = function(){
this.name = "emp";
};
1 Employee.prototype = new Person();
2 Employee.prototype.name = "protoName";
Person.prototype.name = "rose";
e = new Employee();
alert(e.name);//输出emp
delete e.name;
alert(e.name);//输出protoName
delete Employee.prototype.name;
alert(e.name);//输出rose
</script>
上面这段代码可以看出调用e.name 首先到e对象内部查找可以找到emp,删除后然后到e对象的原型中(prototype)去查找name属性此时找到protoName再删除,此时发现程序执行的流程是到Person的原型中去找出了rose, 由此可见代码行1中Employee的原型关联到了Person,相当于Person是Employee的父类。
读者可能会发现上面这段描述写的很敷衍
为什么顺序不是这样
e对象内部->e对象原型->person对象内部->person对象原型
而是
e对象内部->e对象原型-> person对象原型
其实关键就在于1、2两行代码
做个实验
调换1、2两行代码的位置

2 Employee.prototype.name = "protoName";
1 Employee.prototype = new Person();
再运行看看结果
alert(e.name);//输出emp
delete e.name;
alert(e.name);//输出jack
delete Employee.prototype.name;
alert(e.name);//输出rose
</script>
这种输出结果就好像如下顺序
e对象内部-> person对象内部->person对象原型
如果你是真心想学习JS、以后想朝着这个方向发展,那么你一定要来这个企鹅裙,前面前面是2九六,中间是五九一,最后面就是2九零,连起来就是完整的了,来这里可以这里学习经验,得到专人解答,这样你可以成长的更快!!!

为什么有这样的区别,关键就是这句话
Employee.prototype = new Person(); Employee的原型对象被赋值成了一个Person对象即Employee的原型被修改了,那么写在这句前面的Employee.prototype.name ="protoName";就没有用了和删除这句话效果一样
那么Employee.prototype.name也就理所应当等于person对象的name 给Employee.prototype.name赋值也就相当于给person对象的name属性赋值那么原来的jack就被覆盖了原型链就是prototype对象的一条关系链这条链的末端就是Object对象的原型当调用对象的属性或方法时首先会去对象内部查找,然后再依次顺着原型链条一直找到Object

热心网友 时间:2022-04-22 14:09

继承字面意思是 子集继承父集所有特性并且还具备自己的特性。 并且支持有多个爹 。😄
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑文件编辑好如何发送给微信如何把电脑上的文件发到微信上 笔记本电脑上的文件发送到微信怎么把电脑里的文件传到手机微信 我每天早晨吃米糊放白糖有害吗? 吃糖太多对我有好处么! 适合明年工作计划开头的句子 让人耳目一新的年度工作计划开头句子锦集五十四句 个人年度工作计划开头优美句子 让上司眼前一亮的工作计划开头语收藏四十一句 工作计划开头 怎么写工作计划开头 新干线0系电动列车的运行设备 如何把一个华为的传说对决帐号转到一个vivo手机上并且手机主人不同但是同一个? VIVO手机可不可以玩传说对决? 如何把一个华为的传说对决帐号转到另一个vivo手机上? 传说对决可以像王者那样修改英雄的攻击文件吗? 请问大神们 我想在手机上玩 传说对决(台服王者荣耀) 出现酱紫情况 怎么办呀 传说对决修改 传说对决需要的配置 什么是作用域链,什么是原型链,它们的区别,在js中它们具体指什么 谁有初中英语教师资格证的资料吗 考初中英语教师资格证的教材需要什么书 企业怎么注销 女生想要的是什么? 女人想要的是什么,在乎的什么?不懂女人心 2019年青岛科技大学考研分数线 女人最需要的是什么?? 女人想要的是什么呢? 哈尔滨科技大学研究生分数线 鞍山科大研究生录取分数线 中科大固体物理学科考研分数线 单位收到工伤保险如何入账 用友畅捷通的软件和用友U8的软件哪个好呀 有个甩甩宝宝的社交电商平台,知道这里的货品保真不保真吗? 做甩甩宝宝掌柜收益怎么样? 甩甩宝宝是什么平台? 知道甩甩宝宝吗?这个是传销吗? 甩甩宝宝这个社交电商平台上面的货品是真的吗? 甩甩宝宝社交电商平台靠谱吗? 你们感觉甩甩宝宝的发展前景怎么样? 建议在甩甩宝宝上买东西吗? 在甩甩宝宝买东西靠谱吗 甩甩宝宝融资额在其行业中是不是算比较多的? 做甩甩宝宝掌柜赚钱吗? 甩甩宝宝官网,微信扫这个码,对不对? &#x00A0;公主购和甩甩宝宝哪个好? 有了解甩甩宝宝直播形式的吗?说说呗? 甩货宝宝的东西为什么这么便宜? 甩甩宝宝掌柜可信吗,他们怎么赚收益 甩甩宝宝入驻的话有什么要求吗? 我国沪深股市交易中,如果买卖一次股票 我国沪深股市交易中,如果买、卖一次股票均需付交易金额的0.5%作费用.张先生以每股5元的价格买入“西昌