构造函数、原型

构造函数概念

1.自定义构造函数

function Person (name, age) {
  this.name = name
  this.age = age
  this.sayName = function () {
    console.log(this.name)
  }
}
​
var p1 = new Person('Jack', 18)
p1.sayName() // => Jack
var p2 = new Person('Mike', 23)
p2.sayName() // => Mike

理解:对单一函数的批量改造自定义?

注意点:1.构造函数配合 new才有意义,

    2.函数+首字母大写

new的意义:创建一个新对象-this指向这个对象-执行构造函数,给这个对象添加属性和方法-返回新对象

构造函数的作用:实例化对象,给对象赋值,添加属性方法等。

 

原型概念:

每个构造函数都有一个prototype属性,这个对象的所有属性和方法都会被构造函数创建出的实例继承,这个对象就叫原型,或原型对象。原型的作用:共享数据

构造函数,原型,实例三者的关系:

构造函数:就是一个函数,能够配合new创建新对象。

实例:由构造函数创建出的实例对象,一个构造函数可以有多个实例对象。

原型:每一个构造函数都有的属性prototype,由构造函数创建出的实例对象可以使用原型上的属性和方法。

 

继承:

创建出的实例对象使用构造函数.prototype拿取属性与方法即叫继承。

 

_proto_

通过构造函数创建出的实例自带proto属性。proto属性指向构造函数的原型prototype。也就是原型对象。

获取原型对象:构造函数.prototype,实例的proto。

ps:属于私有属性,不可遍历,添加属性方法等。只可用来检测原型。

 

constructor属性 (☆)

默认情况下,原型对象中值包含了一个属性:constructor,constructor属性指向了当前的构造函数。

 

原型链:
构造函数实例化的对象,可以访问原型中的属性和方法。如果是查找操作,沿着proto一直向上查找。会先在自身上查找。如果没有查找proto对应的原型。直到object.prototype。如果是修改操作,只会修改自身的属性。如果没有,新增属性。

总结:

任何一个对象都有自己的原型对象,而原型对象也有自身的原型对象。这样环环相扣的链式结构就是所称的原型链。

object.prototype是原型链的尽头,object.prototype的原型是null。

 

原型链的大致关系:

 

posted on 2022-02-16 14:54  SE7EN_96  阅读(161)  评论(0编辑  收藏  举报

导航