原型和原型链理解

原型和原型链理解_第1张图片

这个图大概能概括原型和原型链的关系

1.对象都是通过 _proto_ 访问原型

2.原型都是通过constructor 访问构造函数

3.原型是构造函数的 prototype

4.原型也是对象实例 也是通过 _proto_ 访问原型(Object.prototype)

5.Object.prototype的原型通过 _proto_ 访问 为null

那么原型和原型是什么?

原型:任何一个JS对象在创建时会关联的一个对象,创建出来的对象能继承原型上的属性

原型链:当对象访问一个属性时,先找自身有无其属性,没有就去原型上找,因为原型也是一个对象实例,所以在构造函数原型上找不到,就会去对象原型(Object.prototype)上找

常见的面试题和解析

function Person() {}
const person = new Person()

console.log(person.__proto__ === Person.prototype) // true
console.log(Person.prototype.constructor === Person) // true
console.log(Object.getPrototypeof(person) === person._proto_) // true
consoe.log(Person.prototype.__proto__ === Object.prototype)  // true
consoe.log(Object.prototype.constructor === Object) // true

//见图即可
//Object.getPrototypeof返回指定对象的原型


console.log(person.constructor ==== Person) // true
//因为person.constructor ,先找自身属性,没有就找原型 Person.prototype,Person.prototype.constructor 刚好就等于Person

console.log(Object.prototype._proto_) // null

你可能感兴趣的:(javascript,typescript,开发语言)