原型,原型链 和instanceof

原型: ** Every function has a prototype property and it contains an object **
这句话就是说,每个函数都有一个属性叫做原型,这个属性指向一个对象。(这个对象我们称为原型对象)

构造函数:通过 new 函数名来实例化对象的函数叫构造函数 ,任何函数都可以作为构造函数存在。

原型对象:在声明了一个函数之后,浏览器会自动按照一定的规则创建一个对象,这个对象就叫做原型对象,存放在堆中

3. 原型与构造函数的关系

注:es5 构造函数声明是function  es6 构造函数声明是class 

每一个class 都有一个显示原型 prototype 属性

每一个对象都有一个隐式原型_proto_属性。

每一个对象的隐示原型都指向对应class 的显示原型

列如:

class Student {
    constructor(name){
        this.name = name;
    }
    studentName(){
            console.log(`studentName:${this.name}`);
    }
}
const  zhangsan = new Student('张三')

zhangsan.__proto__ === Student.prototype  // true   对象的隐示原型指向对应class的显示原型

 堆栈示意图

图中class(函数) Student.prototype 和实力对象zhangsan._proto_指向的是同一个堆内存地址

原型链:对象的隐式原型指向对应构造函数的显示原型无限向上查找形成链式结构

如下图

 3.instanceof

    A instanceof B

     instanceof 是用来判断一个对象的原型链上是否存在另一个函数的原型对象,如果存在,就说名这个对像是从这个函数或子类创出出来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值