原型对象和对象原型以及原型链
1个回答
展开全部
1.原型就是原型对象------prototype 作用就是:共享方法。
每一个构造函数都有一个 prototype 属性,指向另一个 对象 , 构造函数通过原型分配的函数是所有对象所共享的 。由于在构造函数中定义的方法在创建实例时,都会开辟一个新的内存从而造成内存浪费的问题,这时我们就可以把那些不变的方法直接定义在prototype对象上,这样所有的对象的实例就可以共享这些方法。
2.对象原型__proto__
对象都会有一个__proto__属性,指向 构造函数的prototype 原型对象 ,之所以我们对象可以使用原型对象的属性和方法,就是因为对象有__proto__原型的存在。
①实例.__proto__和构造函数.prototype是等价的
②方法的查找规则: 首先看实例对象上是否存在这个方法,如果存在就调用实例本身的方法,如果没有就去构造函数原型对象上去查找,如果还是没有就继续向Object.prototype中查找,直到返回null (就近原则)
③__proto__对象原型的意义就在于为对象的查找机制提供一个方向,它是一个非标准属性,因此实际开发中不可以使用这个属性,它只是内部指向原型对象。
对象原型 和构造函数 原型对象 里面都有一个属性:constructor。我们称 为构造函数 ,因为它 指回构造函数本身。
而__proto__原型的constructor也是同样指向的是构造函数 ,是通过 实例.__proto__ 先指向 原型对象 然后再 通过 constructor指向构造函数
很多情况下,我们需要 手动 的利用constructor这个属性 指回原来的构造函数 ,例如,我们修改了原来的原型对象, 给原型对象赋值的是一个对象 ,那么就必须手动的利用constructor指回原来的构造函数。在对象中写: constructor:目标构造函数。
①只要是 对象 就 有__proto__ 原型,指向 原型对象
② 实例 的原型对象里面的 __proto__ 原型指向的是 Object.prototype
③ Object.prototype 里面的 __proto__ 原型指向的是 null
④由__proto__原型连接而成的'链子'就是原型链
每一个构造函数都有一个 prototype 属性,指向另一个 对象 , 构造函数通过原型分配的函数是所有对象所共享的 。由于在构造函数中定义的方法在创建实例时,都会开辟一个新的内存从而造成内存浪费的问题,这时我们就可以把那些不变的方法直接定义在prototype对象上,这样所有的对象的实例就可以共享这些方法。
2.对象原型__proto__
对象都会有一个__proto__属性,指向 构造函数的prototype 原型对象 ,之所以我们对象可以使用原型对象的属性和方法,就是因为对象有__proto__原型的存在。
①实例.__proto__和构造函数.prototype是等价的
②方法的查找规则: 首先看实例对象上是否存在这个方法,如果存在就调用实例本身的方法,如果没有就去构造函数原型对象上去查找,如果还是没有就继续向Object.prototype中查找,直到返回null (就近原则)
③__proto__对象原型的意义就在于为对象的查找机制提供一个方向,它是一个非标准属性,因此实际开发中不可以使用这个属性,它只是内部指向原型对象。
对象原型 和构造函数 原型对象 里面都有一个属性:constructor。我们称 为构造函数 ,因为它 指回构造函数本身。
而__proto__原型的constructor也是同样指向的是构造函数 ,是通过 实例.__proto__ 先指向 原型对象 然后再 通过 constructor指向构造函数
很多情况下,我们需要 手动 的利用constructor这个属性 指回原来的构造函数 ,例如,我们修改了原来的原型对象, 给原型对象赋值的是一个对象 ,那么就必须手动的利用constructor指回原来的构造函数。在对象中写: constructor:目标构造函数。
①只要是 对象 就 有__proto__ 原型,指向 原型对象
② 实例 的原型对象里面的 __proto__ 原型指向的是 Object.prototype
③ Object.prototype 里面的 __proto__ 原型指向的是 null
④由__proto__原型连接而成的'链子'就是原型链
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询