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中原型链,说简单也简单。 首先明确: 函数(Function)才有prototype属性,对象(除Object...
    亚讯阅读 4,805评论 1 8
  • 原型链是前端面试里一个经久不衰的问题了,自己也查阅了很多的资料,像红宝书、JavaScript忍者秘籍上都有对这一...
    super_wei阅读 109,445评论 10 63
  • 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好。 不...
    晨光2016阅读 1,310评论 8 13
  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,153评论 0 6
  • 大家好!我是322号星宝宝营养美容培训师祁爽,正在参加日记星球第14期蜕变之旅,这是我的第75篇原创日记,我已经感...
    营养美容培训师祁爽阅读 307评论 0 0