javascript原型(容易犯糊涂点的总结)

在javascirpt中,每一个对象都有一个指向它的原型对象的内部连接,这个原型对象又有本身的原型,一级一级连接上去,直到某个对象的原型为null,从而实现了继承。javascript

犯浑的地方

javascript中的原型继承几乎是面试必问点,然而真正透彻的理解它仍是须要费一番功夫的,prototype, __proto__, constructor等等看到脑子就昏掉了,有时候觉得本身掌握了,可是没过多久看到角度不一样的讲解时就又犯糊涂了TThtml

犯浑点1:javascript中的构造函数,实例与原型之间的关系。

借用这篇文章中的一幅图:java

图片描述

总结出了如下三点内容:面试

  1. 原型继承的时候仅仅限于对象之间的继承;函数

  2. 经过构造函数生成的对象实例,实际上继承的是构造函数的原型;spa

  3. 构造函数在其中只是充当了构造器的角色,在考虑继承关系时,能够将其忽略,而只考虑其的prototype;prototype

举个例子,使用Array构造器函数生成Array实例的时候,实例继承的是Array函数的prototype对象,Array的prototype对象上声明了concat,pop,splice等等的方法。3d

犯浑点2: 另一个糊涂的点就是__protp__与prototype的关系。

__proto__在某些环境下能够获得该对象的原型对象, 可是标准的方法是
经过Object.getPrototypeOf()的方式查询a的原型对象。htm

因此,不使用__proto__,使用Object.getPrototypeOf()的方法既标准,又能够避免咱们由于__proto__和prototype混淆而头疼。对象

相关文章
相关标签/搜索