javascript原型链,构造函数,实例原型之间的关系

186 阅读1分钟

一、构造函数如何创建对象?

话不多说,直接上例子

function Person() {

}
var person = new Person(); //通过new实例化构造函数,生成一个实例对象 ‘person’
person.name = 'iwen';
console.log(person.name) // iwen

二、prototype 实例原型

每个函数都有一个 prototype 属性,这个属性指向的就是我们所说的原型对象

也就是说,函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数

而创建的实例的原型

例子来了

function Person() {

}
const pty = Person.prototype; //pty我们可以称为 实例原型
var person = new Person(); // person 我们可以称为 实例

三、原型链__proto__

这是每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__

这个属性会指向该对象的原型。

例子来了

function Person() {

}
const pty = Person.prototype; //pty我们可以称为 实例原型
var person = new Person(); // person 我们可以称为 实例

person.__proto__ === pty; //true 

  • 说明实例的__proto__属性 等于 构造函数的prototype

四、 constructor

每个原型都有一个 constructor 属性指向关联的构造函数

例子

function Person() {

}
const pty = Person.prototype; //pty我们可以称为 实例原型
pty.constructor === Person; //true

五、 实例与原型的关系?

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性

如果还查不到,就去找原型的原型,一直找到最顶层为止。

一、结语

感谢各位老铁,点赞加关注