当前位置: 首页 > news >正文

可以做家装设计的网站/seo站内优化站外优化

可以做家装设计的网站,seo站内优化站外优化,企业网站建设空间,广东网站建设服务公司JavaScript中instanceof为一个关键字 用法为: obj instanceof con 其返回值为true或false。 对于其原理的阐述一般为“Javascript 的 instanceof 操作符可以用来比较两个操作数的构造函数 constructor”。 但constructor是什么,instanceof的判断依据又到…

JavaScript中instanceof为一个关键字

用法为:

obj instanceof con

其返回值为true或false。 

对于其原理的阐述一般为“Javascript 的 instanceof 操作符可以用来比较两个操作数的构造函数 constructor”。

但constructor是什么,instanceof的判断依据又到底是什么呢? 

首先看看实现的解释代码:

function _instanceof( obj , func ) {while(true) {obj = obj.__proto__; // [[prototype]] (hidden) propertyif( obj == null) return false;if( obj ==  func.prototype ) return true;}
}

简单来说,就是

obj.__proto__[.__proto__] === con.prototype

因此,对instanceof 的原理应理解为

判断obj原型链中是否有con.prototype,用处则为判断obj是否为con的一个实例。

前述的constructor是指obj的构造函数,即obj.__proto,而非obj.__proto__.prototype.constructor的引用。

 

写个样例用来区分,看着样例会容易理解很多。

例子一:

function O2(aa,bb){var aa = aa;this.bb = bb;
}
//1、正常情况
var o2 = new O2("a2","b2");
console.log(o2 instanceof O2);//true//2、修改了构造函数的原型对象
var o4 = new O2("a4","b4");
O2.prototype = {};
console.log(o4 instanceof O2);//false//3、修改了构造函数原型对象的constructor属性
var o6 = new O2("a6","b6");
O2.prototype.constructor = Object;
console.log(o6 instanceof O2);//true

通过上面的例子可以看出,修改O2.prototype.constructor不会影响instanceof的效果。

例子二:

    function O2(aa,bb){var aa = aa;this.bb = bb;}function O6(aa,bb){var aa = aa;this.bb = bb;}//1、正常情况var o2 = new O2("a2","b2");console.log(o2 instanceof O2);//trueconsole.log(o2.__proto__ === O2.prototype);//true// 2、修改了构造函数的原型对象var o4 = new O6("a4","b4");    console.log(o4 instanceof O6);//truefunction F(){};O6.prototype = new F;console.log(o4 instanceof O6);//falseconsole.log(o4 instanceof F);//falseconsole.log(o4.__proto__ === F.prototype);//false//3、修改了构造函数原型对象的constructor属性var o6 = new O6("a6","b6");console.log(o6 instanceof O6);//trueconsole.log(o6 instanceof F);//trueconsole.log(o6.__proto__.__proto__ === F.prototype);//true    console.log(o6.__proto__ === F.prototype);//false

使用这个例子便可以理解instanceof的判断条件:

obj.__proto__[.__proto__] === con.prototype

 

扩展阅读:

例子问答: http://segmentfault.com/q/1010000002697768

内核代码解析1:http://stackoverflow.com/questions/17701102/javascript-prototype-constructor-and-instanceof

内核代码解析2: http://stackoverflow.com/questions/5925063/how-exactly-does-the-instanceof-works-and-relatively-is-it-slow/12874372#12874372

官方详解: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof

转载于:https://www.cnblogs.com/dhuhank/p/4447849.html

http://www.lbrq.cn/news/1401715.html

相关文章:

  • 如何跟客户销售做网站/58同城推广
  • 免费咨询律师网站/南宁网站建设
  • 怎样做视频网站的外链/国外搜索引擎网站
  • 百度免费网站申请注册/seo排名教程
  • 建设职业技术学院网站/外贸推广营销公司
  • 怎么样自己做网站接订单/徐州百度推广公司
  • 网站建设外包协议范本/seo主要做什么工作
  • 怎样自己建设一个网站/北京自动网络营销推广
  • 域名可以同时做邮箱和网站么/公司网站设计方案
  • 线上做图的网站/熊猫关键词工具官网
  • 做外掛网站空间/今日油价最新
  • 做网站成功/sem和seo是什么职业岗位
  • 给别人做网站赚钱吗/合肥百度推广排名优化
  • 做网站给不给源代码/如何搭建网站
  • 韩国男女真人做视频网站/最近发生的热点新闻
  • 对百度网站做压力测试/设计一个公司网站多少钱
  • 做网站改字号代码/企业网站制作模板
  • wordpress 线条不显示不出来/吉林seo基础
  • 百度秒收网站/share群组链接分享
  • 郑州直销网站制作/网络营销推广与策划
  • 建筑网站首页大图/创意营销点子
  • 滕州市建设局网站/泰安seo
  • 深圳网站制作公司资讯/网站查询seo
  • 网站链接收费怎么做的/百度上做推广怎么收费
  • 直接用源码做网站盗版吗/找小网站的关键词
  • 东营做网站哪里好/浏览器打开网站
  • 福建省人民政府第七办公室/南宁seo外包靠谱吗
  • ibm网站导航特效代码/北京百度seo关键词优化
  • 贵阳网络网站建设/广州网站seo推广
  • 网站文件夹目录结构/软文广告案例500字
  • 机器学习总复习
  • STL模板库——string容器
  • 【JavaEE】多线程(线程安全问题)
  • 走进数字时代,融入数字生活,构建数字生态
  • GStreamer无线图传:树莓派到计算机的WiFi图传方案
  • STL——string的使用(快速入门详细)