【javascript】对原型对象、原型链的理解

原型对象,原型链这些知识属于基础类知识。但是平时开发过程中也很少用到。

看网上的意思,原型链用于es5开发场景下的继承。es6有了类语法糖之后,就自带继承了。

 

通过理解,个人画了一张原型链解构的关系图:

可以看出:

从构造函数F开始

new 构造函数F就是实例对象f(var f=new F())

构造函数F.prototype就是F的原型对象(F.prototype==F原型对象)

F原型对象.constructor就是构造函数F(F.prototype.constructor==F)

F原型对象.__proto__是Object的原型对象(F.prototype.__proto__==Object.prototype)

实例对象f.__proto__是F原型对象(f.__proto__==F.prototype)

Object的原型对象就是null(终结)

 

场景1:

无此私有属性:

原型添加属性后,f.a将会有值。不加的话,如果构造函数中不设置该属性,就是undefined

有此私有属性:

如果设置了私有属性就用不到了

 

场景2:

构造函数中无方法,原型对象中有方法,便可调用之

 

posted @ 2019-01-17 16:31  herry菌  阅读(389)  评论(0编辑  收藏  举报