JS原型,a和b是不是失散多年的兄弟?

时间:2022-04-27
本文章向大家介绍JS原型,a和b是不是失散多年的兄弟?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

面试题这种东西真的是反人类的设计,我觉得它的最大的作用就是用来打击我的信心。每当我觉得自己js水平还可以,的时候,它就会在不经意间跳出来,给我一耳光。例如这个,

var F = function(){};
Object.prototype.a = function(){};
Function.prototype.b = function(){};
var f = new F();
// f能得到a,b吗?啥原因?

当然了,这种东西也是网上瞎逛来的。最近在讲课,所以技术类的东西会多写一些。

回到这个题,我一看题目就明白,这是个js原型链的东西,于是我老神入定的脑补了几分钟,得出结论“f可以得到a,b”,呵呵,

然后打开F12控制台,运行了一下,然后我挨了一耳光,“f得不到b”

万事皆有因缘,f和b为何无缘?

简单的说,

f.a === Object.prototype.a   //=> true
f.b === Function.prototype.b  //=> false

就是“原型链上找不到b”,

这个题的关键词有二个

1、prototype

2、__proto__

基础概念,

1、函数有prototype属性;

2、对象有__proto__;

在理解了上面的知识点的情况下,把你所能查到的所有的关于“JS原型链”的文章都看一遍,且保证看懂80%,那么上面那个题你就明白啦。

具体的js原型链的东西我这里就不写了,相关的文章资料已经很多。

想真正完全彻底的学会js,真的不是件容易的事情。