Javascript原型链及instanceof原理详解


Posted in Javascript onMay 25, 2020

instanceof:用来判断实例是否是属于某个对象,这个判断依据是什么呢?

首先,了解一下javascript中的原型继承的基础知识:

javascript中的对象都有一个__proto__属性,这个是对象的隐式原型,指向该对象的父对象的原型(prototype)。显式的原型对象使用prototype,但是Object.prototype.proto=null;

判断某个对象a是否属于某个类A的实例,可以通过搜索原型链。

实例对象属性查找顺序是:实例对象内部---->构造函数原型链---->实例对象父对象的原型链。

//继承机制
  function A(){
  }
  A.prototype.name='licui';

  function B(){

  }
  B.prototype = new A();

  var a = new A();
  var b = new B();
  //b.name = 'hello';

  console.log('A:',A);
  console.log('B:',B);
  console.log('a:',a);
  console.log('b:',b);

  console.log('A.prototype',A.prototype);
  console.log('B.prototype',B.prototype);
  console.log('a._proto_',a.__proto__);
  console.log('b._proto_',b.__proto__);

  console.log('a instanceof A:',a instanceof A);
  console.log('a instanceof Object:',a instanceof Object);
  console.log('b instanceof B:',b instanceof B);
  console.log('b instanceof A:',b instanceof A);
  console.log('b instanceof Object:',b instanceof Object);

执行结果

Javascript原型链及instanceof原理详解

constructor:是原型prototype上的属性,实例上不具有该属性。

Javascript原型链及instanceof原理详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript方法和技巧大全
Dec 27 Javascript
ExtJS4 动态生成的grid导出为excel示例
May 02 Javascript
javascript为下拉列表动态添加数据项
May 23 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 Javascript
js的flv视频播放器插件使用方法
Jun 23 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
JS实现的合并两个有序链表算法示例
Feb 25 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
解决vue+webpack项目接口跨域出现的问题
Aug 10 Javascript
Node登录权限验证token验证实现的方法示例
May 25 #Javascript
详解Node.js使用token进行认证的简单示例
May 25 #Javascript
基于redis的小程序登录实现方法流程分析
May 25 #Javascript
JSONP解决JS跨域问题的实现
May 25 #Javascript
JS实现时间校验的代码
May 25 #Javascript
使用Typescript和ES模块发布Node模块的方法
May 25 #Javascript
js 动态校验开始结束时间的实现代码
May 25 #Javascript
You might like
php解压文件代码实现php在线解压
2014/02/13 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python中无限循环需要什么条件
2020/05/27 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
python如何停止递归
2020/09/09 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
21岁生日感言
2014/02/27 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
公司保洁员管理制度
2015/08/04 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
MySQL Server 层四个日志
2022/03/31 MySQL
HDFS免重启挂载新磁盘
2022/04/06 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL