原型与原型链

原型,每一个javascript对象(除null外)创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。

一,prototype

1,在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。

2,prototype是函数和类才有的属性,实例对象是没有的

3,构造函数可以给prototype添加属性,该属性可以让全部该函数创建的实例对象共享

4,prototype的constructor指向其构造函数

function one(){}

console.log(one.prototype.constructor===one)//true

 

function student(name){
    this.name=name
}
student.prototype.state=1
class student2{
    constructor(name){
        this.name=name
    }
}

student2.prototype.state=2

let a1=new student(10)
let a2=new student2(15)

console.log(a1.state)//1
console.log(a2.state)//2

 

 

 二,__proto__

1,每个非空对象(排除null)都会有该属性,这个属性会指向该对象的原型

 

function one(){}

let item=new one()

console.log(item.__proto__===one.prototype)

 

三,constructor

每个原型都有construcotr,指向关联的构造函数

 

四,最终指向

 每个对象都有原型,每个原型也有原型,直到终点Object,这就构成了链条状,也就是所谓的原型链

 

posted @ 2021-08-19 17:33  来吃点代码  阅读(41)  评论(0编辑  收藏  举报