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 相关文章推荐
SUN的《AJAX与J2EE》全文译了
Feb 23 Javascript
IE8 原生JSON支持
Apr 13 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
分享一个asp.net pager分页控件
Jan 04 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
JavaScript中的getDay()方法使用详解
Jun 09 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
Jun 26 Javascript
vue的$http的get请求要加上params操作
Nov 12 Javascript
js实现简单商品筛选功能
Feb 02 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
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来处理多个提交任务
2008/05/08 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
js常用代码段整理
2011/11/30 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
Python的迭代器和生成器
2015/07/29 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python代码过长的换行方法
2018/07/19 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
Java基础面试题
2012/11/02 面试题
客户代表实习人员自我鉴定
2013/09/27 职场文书
青蓝工程实施方案
2014/03/27 职场文书
学习作风建设心得体会
2014/10/22 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
Java如何实现树的同构?
2021/06/22 Java/Android