最后
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)
《前端开发四大模块核心知识笔记》
最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
1)人是人他妈生的,妖是妖他妈生的。人和妖都是对象实例,而人他妈和妖他妈就是原型。原型也是对象,叫原型对象。
2)人他妈和人他爸啪啪啪能生出一堆人宝宝、妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗称造人。
3)人他妈会记录啪啪啪的信息,所以可以通过人他妈找到啪啪啪的信息,也就是说能通过原型对象找到构造函数。
4)人他妈可以生很多宝宝,但这些宝宝只有一个妈妈,这就是原型的唯一性。
5)人他妈也是由人他妈他妈生的,通过人他妈找到人他妈他妈,再通过人他妈他妈找到人他妈他妈……,这个关系叫做原型链。
6)原型链并不是无限的,当你通过人他妈一直往上找,最后发现你会发现人他妈他妈他妈……的他妈都不是人,也就是原型链最终指向null。
7)人他妈生的人会有人的样子,妖他妈生的妖会有妖的丑陋,这叫继承。
8)你继承了你妈的肤色,你妈继承了你妈他妈的肤色,你妈他妈……,这就是原型链的继承。
9)你没有家,那你家指的就是你妈家;你妈也没有家,那你家指的就是你妈他妈家……这就是原型链的向上搜索。
10)你会继承你妈的样子,但是你也可以去染发洗剪吹,就是说对象的属性可以自定义,会覆盖继承得到的属性。
11)虽然你洗剪吹了染成黄毛了,但你不能改变你妈的样子,你妈生的弟弟妹妹跟你的黄毛洗剪吹没一点关系,就是说对象实例不能改动原型的属性。
12)但是你家被你玩火烧了的话,那就是说你家你妈家你弟们家都被烧了,这就是原型属性的共享。
13)你妈外号阿珍,邻居大娘都叫你阿珍儿,但你妈头发从飘柔做成了金毛狮王后,隔壁大婶都改口叫你金毛狮王子,这叫原型的动态性。
14)你妈爱美,又跑到韩国整形,整到你妈他妈都认不出来,即使你妈头发换回飘柔了,但隔壁邻居还是叫你金毛狮王子。因为没人认出你妈,整形后的你妈已经回炉再造了,这就是原型的整体重写。
尼玛!你特么也是够了! Don’t BB! Show me the code!
function Person (name) { this.name = name; }
function Mother () { }
Mother.prototype = { //Mother的原型
age: 18,
home: [‘Beijing’, ‘Shanghai’]
};
Person.prototype = new Mother(); //Person的原型为Mother
//用chrome调试工具查看,提供了__proto__接口查看原型
var p1 = new Person(‘Jack’); //p1:‘Jack’; proto:18,[‘Beijing’,‘Shanghai’]
var p2 = new Person(‘Mark’); //p2:‘Mark’; proto:18,[‘Beijing’,‘Shanghai’]
p1.age = 20;
/* 实例不能改变原型的基本值属性,正如你洗剪吹染黄毛跟你妈无关
-
在p1实例下增加一个age属性的普通操作,与原型无关。跟var o{}; o.age=20一样。
-
p1:下面多了个属性age,而__proto__跟 Mother.prototype一样,age=18。
-
p2:只有属性name,__proto__跟 Mother.prototype一样
*/
p1.home[0] = ‘Shenzhen’;
/* 原型中引用类型属性的共享,正如你烧了你家,就是烧了你全家的家
-
这个先过,下文再仔细唠叨一下可好?
-
p1:‘Jack’,20; proto:18,[‘Shenzhen’,‘Shanghai’]
-
p2:‘Mark’; proto:18,[‘Shenzhen’,‘Shanghai’]
*/
p1.home = [‘Hangzhou’, ‘Guangzhou’];
/* 其实跟p1.age=20一样的操作。换成这个理解: var o{}; o.house=[‘big’,‘house’]
-
p1:‘Jack’,20,[‘Hangzhou’,‘Guangzhou’]; proto:18,[‘Shenzhen’,‘Shanghai’]
-
p2:‘Mark’; proto:18,[‘Shenzhen’,‘Shanghai’]
*/
delete p1.age;
/* 删除自定义的属性之后,原本被覆盖的原型值就重见天日了。这里就是向上搜索机制,所以才有下面的动态性
-
p1:‘Jack’,[‘Hangzhou’,‘Guangzhou’]; proto:18,[‘Shenzhen’,‘Shanghai’]
-
p2:‘Mark’; proto:18,[‘Shenzhen’,‘Shanghai’]
*/
Person.prototype.lastName = ‘Jin’;
学习分享,共勉
题外话,毕竟我工作多年,深知技术改革和创新的方向,Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
获人心
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
[外链图片转存中…(img-GFaEgbTq-1715687156340)]