JavaScript原型、构造函数、实例之间的关系简介

1.原型、构造函数、实例介绍

  • 原型(prototype):一个对象,用于实现对象的属性继承。可以简单的理解成对象的父级。在火狐和谷歌中,每个 JavaScript 对象中都包含一个proto的属性指向父系(该对象的原型),可通过 obj.proto进行访问。

  • 构造函数:可以通过 new 关键字创建对象的函数;(function,箭头函数不可以使用 new 关键字)

  • 实例:通过 new 关键字和构造函数结合使用,创建出来的对象就是实例,实例通过proto属性指向原型对象,通过 constructor 属性指向构造函数;

function Dog(name) {
    
    
  //其实这个函数是一个普通函数,只不过是如果我们把它当做构造函数使用的时候,程序员之间人为的规定大写,只是一个约定而已
  this.name = name;
}
var dog = new Dog();

此时的 dog 就是一个实例,它的构造函数就是 Dog,它的原型就是

//原型
原型对象=Dog.prototype
原型对象、构造函数、实例之间的关系如下:
实例.__proto__===原型;

原型.constructor===构造函数;

构造函数.prototype===原型对象;

实例.constructor===构造函数

2.原型链简介

原型链是由原型对象组成,每个对象都有 proto 属性,指向了创建该对象的构造函数的原型,proto 将对象连接起来组成了原型链。是一个用来实现继承和共享属性的有限的对象链

  • 1.属性查找机制: 当查找对象的属性时,如果实例对象自身不存在该属性,则沿着原型链往上一级查找,找到时则输出,不存在时,则继续沿着原型链往上一级查找,直至最顶级的原型对象 Object.prototype,如还是没找到,则输出 undefined;
  • 2.属性修改机制: 只会修改实例对象本身的属性,如果不存在,则进行添加该属性,如果需要修改原型的属性时,则可以用: b.prototype.x = 2;但是这样会造成所有继承于该对象的实例的属性发生改变。

参考网址:https://juejin.im/post/5c64d15d6fb9a049d37f9c20

猜你喜欢

转载自blog.csdn.net/weixin_45356397/article/details/103087369
今日推荐