导航:首页 > 编程语言 > js继承的原理

js继承的原理

发布时间:2023-08-24 15:33:40

js中继承怎么理解,为什么要用js继承

js中继承跟java中的继承不太一样,一般通过call()和apply()两种方式完成,js中的继承是以复制的形式完成的,复制一个父对象,而不像java中直接继承父对象,还有通过原型的方式完成继承,也有弊端,总之js中的继承只是形式上的对面向对象语言的一种模仿,本质上不是继承,但用起来效果是一样的
至于为什么要继承:通常在一般的项目里不需要,因为应用简单,但你要用纯js做一些复杂的工具或框架系统就要用到了,比如webgis、或者js框架如jquery、ext什么的,不然一个几千行代码的框架不用继承得写几万行,甚至还无法维护

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

先来看一下原型
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

阅读全文

与js继承的原理相关的资料

热点内容
app无法下载是为什么苹果手机 浏览:518
右击此电脑管理找不到此文件 浏览:264
图像文件格式百科 浏览:523
没有网络怎么定位 浏览:972
剪切到优盘文件找不到了 浏览:764
电脑管家的文件名 浏览:910
如何将扫描文件转换为电子版 浏览:4
u盘的h246文件怎么播放 浏览:203
如何用阿里云服务器学习数据库 浏览:84
华为文件管理找不到下载文件 浏览:409
word模板dot的使用 浏览:466
春节车找人app哪个好 浏览:618
文件管理电脑找不到了怎么办 浏览:516
如何改变app图标图片 浏览:767
什么是大数据结构的最低层 浏览:575
pdf文件给对方后期改密码收回 浏览:295
word2010怎么画箭头 浏览:184
win10的自动备份文件在哪个目录 浏览:843
文件夹打包成jar 浏览:456
卸载鲁大师找不到文件 浏览:173

友情链接