上周末出去玩,坐车上的时候百般无聊,就看起了手机上的电子版的高三,很有些体会,抽些时间总结出来。
原型,作为javascript中最重要的一个对象之一,很少有人能熟练准确的说出关于它的所有知识点。现在,我根据高三上的表述,再加以提炼,为大家总结出一个“一句话”版本。
1.prototype是Function对象下的一个属性,指向原型对象
2.原型对象默认情况下有一个constructor属性指向原Function对象
3.原型对象的用途是包含Function定义的类型的所有实例的共享属性和方法
4.每个实例对象中包含一个指针[[Prototype]]指向原型对象,FF,Safari,Chrome中实例对象可以通过非标准属性__proto__访问到该属性
5.实例对象在调用方法和属性的时候存在一个查找对象属性的过程--首先从实例对象开始,找到属性或方法名返回该属性或方法,没找到则继续搜索指针指向的原型对象。
6.使用Object.getPrototypeOf方法可以访问到某个实例对象的原型对象
7.使用实例对象.hasOwnProperty可以判断该属性或方法是实例属性/方法还是原型属性/方法
------------------------------------------------------分割线-------------------------------------------------------------------
再补充一点,书上没有明确介绍的
8.原型对象也是对象,也有原型对象。一个实例对象调用属性或方法的时候如果该对象是一个派生出来的对象,
从实例属性/方法->它的原型对象的属性/方法->它的原型对象的原型对象的属性/方法.......一直查找到Object的原型为止。
这样的一条遍历链叫做原型链,和作用域链很像。
下次有空的时候再总结总结作用域链吧