一:你是如何理解js 中的原型的
1.原型是什么?
我们js中 所有的的函数 包括原生的,和自定的 都默认有一个 prototype属性,这属性给我们指向了一个对象,就是原型对象,我们可以通过原型对象来添加属性和方法。
2. 原型中重要的几个要素
a. prototype(显示原型) 通过它我们可以找到函数所对应的原型对象
b. constructor 此属性存在每个函数的原型对象中, 我们可以通过它找到指定的原函数
c. __proto__ 隐式原型) 当我们实例化一个对象(函数)时, 此函数自动拥有了__proto__ 属性, 且它的值是构造函数的prototype的值,也就是此函数的原型对象。
二:请解释一下原型链的原理
说到原型链,我用一个最简单的例子来说明:
首先我们定义一个函数,并且在函数中声明若干变量,同时我们通过prototype 属性在函数的原型对象中声明若干变量。
接着我们将函数实例化,这是此函数就自动拥有了__proto__ 属性(隐式原型)。当调用我们函数中声明的变量, 其中查找的过程是 首先到函数本身去找, 如果找到即返回, 如果没找到 那么根据__proto__ 去我们的原型中查找,找到即返回。 如果还没找到,再根据原型对象中的 __proto__ 继续往上一级对象中查找, 以此类推,一直找到最顶级的 Object 还没有的话, 那么会返回undefined 。
三:如何理解原型继承
基于咱们原型链的原理,就可以证明函数和其原型以及上一级原型对象存在一种继承的关系,正是因为存在这种关系,我们才能够通过原型链的原理找到我们想要的属性或者方法
0000pt�ݖ�