js原型链

为什么typeof可以判断基本类型

是通过存储的二进制机器码来判断的,000为null 和Object;1为整数;010浮点数;100字符串;110布尔值;-2^30undefined

什么是原型

js的原型继承模式,主要是借鉴了java的继承思想,但是没有类的定义,那么对象之间是通过原型链实现继承的。

通过new命令 调用构造函数,生成实例,this指向新生成的实例

每个对象有一个私有属性(_proto_)即[[prototype]]对象保存了需要共享的属性和方法,该对象有一个constructor属性,指向该对象实例的构造函数

每一个函数都有一个prototype属性 指向函数的原型对象,而原型对象又有constructor属性 指向这个函数

构造函数 、原型 、实例

instanceof 和 isPrototypeOf

A instanceof B  判断B.prototype 是否在A的原型链上  也用于判断为A是B的实例,原理?

B.isPrototypeOf(A) 判断B对象是否在A的原型链上  (P.prototype.isPrototypeOf(c))

如果有A.prototype.isPrototypeOf(a)说明 A的原型在a的原型链(_proto_)上,那么必然有 a._proto_指向A.prototype,即a instanceOf A成立

为什么Function instanceOf Object 同时 Object instanceOf Function成立

参考:https://blog.csdn.net/haishangfeie/article/details/80025471

其中Function.prototype和Object.prototype是内置对象,function Function 的_proto_和prototype都指向Function.prototype,function Object的_proto_指向Function.prototype 而上一层的_proto_指向Object.prototype,最后指向null。所以有Function instanceOf Object 和Object instanceOf Function 成立。


原型

父类继承

继承父对象的原型

对象继承

对象继承

浅拷贝和深拷贝

深拷贝

判定对象类型 继承关系typeof instanceof constructor


typeof


instanceof constructor

实例对象的_proto_指向构造函数的原型

原型链

你可能感兴趣的:(js原型链)