JavaScript 之 原型与原型链

prototype:

  • 每个函数都有一个 prototype 属性,
  • 每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。

__ proto __:

  • 每一个JavaScript对象(除了 null )都具有的一个属性,叫__ proto __,这个属性会指向该对象的原型

constructor

  • 一个构造函数可以生成多个实例
  • 每个原型都有一个 constructor 属性指向关联的构造函数

关系:

function Person() {

}

var person = new Person();

console.log(person.constructor === Person); // true
console.log(Person.prototype.constructor === Person) // true
console.log(person.constructor === Person.prototype.constructor)   // true
console.log(person.__proto__ === Person.prototype) // true
// 获得对象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true
console.log(Object.prototype.__proto__ === null) // true

实例与原型:

  • 当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

原型 原型链 构造函数 实例关系图

关系图
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容