原型链-使用浏览器解答(我的简单理解)

什么是原型链?

原型链就是你定义一个函数和构建一个函数对象之间关系编程

什么是prototype?

你能够简单的理解为prototype就是各个实例化的函数对象的老妈(老妈有的就是你的,你有的不必定是老妈的)(__proto__这个属性是函数独有的)浏览器

__proto__是什么?

比如你作题,你搞不定了喊你爸来解决,这个时候__proto__就是你爸的做用了,当你访问一个对象的属性的时候,他找不到那他就要说:爸这个东西我不知道啊,你能够搞不(__proto__这个属性是对象独有的)函数

最后就是constructor是什么?

这就像你家不止你一个,有你姐、你弟,那么怎么明确谁是谁呢,那就是constructor,它的做用就是由它来将各个对象区分开来(constructor属性也是对象才拥有的)学习

国际惯例,上图!


看了上面的图,因此咱们就获得了最经典的原型链等式
f1.__proto=== Foo().prototype 怎么来的呢?由于js中全部东西都是由对象来的,而后定义了一个函数,函数的公共方法就放在prototype里面,可能不太理解的最多就是f1.constructor为何直接等于Foo()了,还不是由于f1中没有constructor这个东西,而后就叫老爸f1.__proto__帮他搞,老爸才找到了这个东西

最后就是null了

本来世界什么都没有,神说不行啊,这我咋编程啊,而后null就成了Object的空老爸,为何是空老爸呢?由于其余对象的老爸(proto)都或多或少可以帮忙解决问题,可是Object的老爸是null那你想从null中间掏出点什么属性看来是不可能了。
而后就是若是咱们正常定义了一个函数应该有几层呢? .net

这就有了所有完整的原型链了。 图片引用于: blog.csdn.net/cc188688768…

在浏览器上操做这些才能最好学习

本人菜鸡的一点理解,错了但愿大佬指导。prototype

相关文章
相关标签/搜索