当前位置 : 主页 > 大数据 > 区块链 >

prototype 和 __proto__

来源:互联网 收集:自由互联 发布时间:2021-06-22
/* * 1.构造函数里有属性及方法-----其构造的实例对象直接通过new构造时获得这些属性和方法 * 2.构造函数里的原型prototype-----这个原型对象:包括1).原型对象里的属性和方法 ---实例化对
/*
    * 1.构造函数里有属性及方法----->其构造的实例对象直接通过new构造时获得这些属性和方法
    * 2.构造函数里的原型prototype----->这个原型对象:包括1).原型对象里的属性和方法  --->实例化对象里的__proto__指向这个原型对象,可以访问这里的属性和方法
    *                                             2).constructor构造器--->指向构造函数
    *                                             3).__proto__---->Object这个构造函数的原型对象Object.prototype
    *
    * 3.构造函数里的__proto__----->指向构造他的构造函数的原型对象---->Function.prototype
    *
    *
    * 4.实例对象的原型__proto__---->指向构造他的构造函数的原型对象---构造函数的prototype
    *   实例化对象与构造函数之间没有直接联系,通过原型对象进行联系,这就是原型链
    *
    * 5.改变原型的指向实现继承:将一个构造函数的prototype指向一个实例化对象(a),那么由这个构造函数构造的实例化对象(b)的__proto__就指向了
    * 这个实例化对象(a),由此b可以得到a的属性和方法,并且可以通过a的__proto__获得a的构造函数原型prototype里的属性和方法
    *
    * 6.prototype和__proto__
    *
    *   prototype是函数(普通函数或构造函数或方法)特有的原型--->指向一个原型对象,即prototype对象:里面包含着可以继承的原型属性和方法
    *   prototype的指向可以改变,通过改变prototype的指向,可以形成多级的原型链,实现多代的继承
    *
    *   __proto__是对象特有的隐式原型,指向构造这个对象的构造函数的prototype
    *
    *               一个实例化对象的原型链就是通过__proto__的这个指向得出的,这样实例化对象可以得到构造函数原型对象里的属性和方法,实现继承
    *
    *
    *
    * 7.函数可以看成一个对象,那么他的__proto__指向哪里呢?指向构造他的构造函数的prototype,所以就指向Function.prototype
    *   所有的函数都可以看成是Function的一个实例化对象
    *   另外,Function是其自身的构造函数,Function.__proto__ 就指向其自身的原型对象Function.prototype
    *   console.dir(Function.prototype == Function.__proto__);  结果为true
    *
    * 8. 对象的__proto__会指向指向构造这个对象的构造函数的prototype,那么原型链最终的原型对象prototype这个对象的__proto__指向
    * 哪里呢?------>指向Object.prototype
    * 即原型对象是Object这个构造函数的实例化对象
    * Object.prototype.__proto__最终为null
    *
    *
    *
    *
    * */

网友评论