原型与原型链

2019-12-02  本文已影响0人  再见噜噜班

什么是原型

在声明了一个函数之后,浏览器会自动为这个函数创建一个对象,这个对象就是原型对象。每个函数都有一个prototype属性,该属性指向原型对象,这个原型对象中包含一个constructor属性,该属性指向函数本身。

function Foo(){
        this.name='king'
}
let foo = new Foo()
console.log(Foo.prototype.constructor===Foo) //true

在给函数原型对象添加属性或者方法之后,实例对象会自动拥有其属性或者方法

Foo.prototype.hi=function(){console.log('hi')}
foo.hi()  //hi

显式原型和隐式原型

原型链

Foo.prototype.age=10
console.log(foo.name,foo.age,foo.color)  //king,10,undefined
foo.age=12
console.log(Foo.prototype.age,foo.age)  //10,12  ,原型对象中age属性值不变

图解原型链

原型链图解.png

其中0xxxx为内存地址值,左侧为栈内存,右侧为堆内存

上一篇 下一篇

猜你喜欢

热点阅读