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 相关文章推荐
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
使用jquery解析XML示例代码
Sep 05 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
JS类的定义与使用方法深入探索
Nov 26 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
elementUI中Table表格问题的解决方法
Dec 04 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 Javascript
vue和小程序项目中使用iconfont的方法
May 19 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php实现jQuery扩展函数
2009/10/30 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Python3读写ini配置文件的示例
2020/11/06 Python
瑜伽国际:Yoga International
2018/04/18 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
给分销商的致歉信
2014/01/14 职场文书
追悼会子女答谢词
2014/01/28 职场文书
社会实践活动总结格式
2015/05/11 职场文书
2015年路政工作总结
2015/05/22 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android