导航:首页 > 编程语言 > 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继承的原理相关的资料

热点内容
ps修改有褶皱的文件 浏览:417
javadbfreader 浏览:307
苹果手机数字代码是什么 浏览:66
驱动程序顺序安装脚本 浏览:665
word文件里怎样查重 浏览:219
mx5系统基带版本 浏览:184
ntlea全域通win10 浏览:171
qq怎么查看别人的收藏 浏览:135
地震三参数matlab程序 浏览:57
怎样给优盘文件加密软件 浏览:7
收拾文件有哪些小妙招 浏览:431
pdf文件去底网 浏览:253
win10重装系统需要格式化c盘吗 浏览:424
路由器trx文件 浏览:655
淘宝店铺数据包怎么做 浏览:195
win10键盘黏连 浏览:332
json如何生成表格 浏览:323
怎么修复sql数据库表 浏览:40
微信微博差别 浏览:163
签到积分换礼品app 浏览:812

友情链接