显式原型和隐式原型

下图是对显式原型和隐式原型的说明,将逐一对原型的原理进行分析。

1、每个函数都会有一个prototype属性,即显示原型,默认指向一个空的对象,所以我们构建了一个Fn的空函数,此函数内也有一个prototype属性指向一个空对象,相当于内部执行了一条this.prototype = {}的语句。

2、fn是Fn的实例,所以它也有自己的实例对象空间,fn中有着一个__proto__属性,即隐式原型。通过判断条件===的结果为true可以知道,fn.__proto__和Fn.prototype是完全相等的,也就是说对象的隐式原型的值为其对应构造函数的显式原型的值,相当于其中执行了this.__proto__=Fn.prototype,都指向了同一个object对象。

3、对于我们程序员来说,我们可以操作显示原型,而不能去操作隐式原型(ES6之前),在JS中可以动态的添加方法,我们操作显示原型指向的空对象,向其中添加test方法,通过Fn的实例对象可以调用这个方法,说明fn是直接去操作__proto__属性来调用的,函数的所有实例对象自动拥有原型中的属性(方法)。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页