[js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()

这几个方法在js的高级编程中经常用到,对于新手来说可能还不知道他们有什么区别,我把我的体会总结下来,供大家参考:

首先,定义一个对象:

 1  function Parent() {this.name = "wenbo";}
 2  Parent.prototype.alertP = function() {  3 alert("Parent");  4  }  5  6 function Child() {this.age = 23;}  7 Child.prototype.alertC = function() {  8 alert("Child");  9  } 10 11 function F() {} 12 F.prototype = Parent.prototype; 13 Child.prototype = new F(); 14 Child.prototype.constructor = Child; 15 var child = new Child();

1,instanceof()   vs   isPrototypeOf():

instanceof:判断该对象是否为另一个对象的实例。

1  console.log(child instanceof  Parent); //true
2  console.log(child instanceof Child); //true 

isPrototypeOf:判断一个对象象是否为一个实例的原型。

1 Parent.prototype.isPrototypeOf(child);//true
2 Child.prototype.isPrototypeOf(child);//true

2, hasOwnProperty()   vs  propertyIsEnumerable():

hasOwnProperty:判断对象是否有某个特定的属性,(注意说的是对象的属性,而不是对象原型的属性)必须用字符串指定该属性。

1 Parent.hasOwnProperty("name");//true
2 Child.hasOwnProperty("age");//true 3 Parent.hasOwnProperty("alertP");//false 4 Child.hasOwnProperty("alertC");//false

propertyIsEnumerable:判断给定的属性是否可以用 for...in 语句进行枚举。由于 for ... in 枚举是包含原型链上的属性的,但propertyIsEnumerable作用于原型方法上时,始终是返回false的,你可以这么认为,for...in可以枚举对象本身的属性和原型上的属性,而propertyIsEnumerable只能判断本身的属性是否可以枚举。此外,预定义的属性不是可列举的,而用户定义的属性总是可列举的。所以如果你只想遍历对象本身的属性,可以:

1 for (var key in obj) {
2 if (obj.hasOwnProperty(key) { 3 //do something 4  } 5 }

转载于:https://www.cnblogs.com/shsgl/p/4122606.html

[js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()相关推荐

  1. java如何调用js_java如何调用js方法

    js方法如下:function add(a,b){ return a + b + number; } 调用方法如下:(免费学习视频教程分享:java视频教程)package com.cgnb.data ...

  2. js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝

    一.一个简单的js方法实现集合拷贝 做web项目的时候,少不了和js中的数组,集合等对象接触,那么你肯定会发现,在js中存在一个怪异的现象就是数组和集合的拷贝都是地址复制,并不是简单的数据的拷贝. 举 ...

  3. java js方法_java如何调用js方法

    详细内容 js方法如下:function add(a,b){ return a + b + number; } 调用方法如下:(免费学习视频教程分享:java视频教程)package com.cgnb ...

  4. 用js方法做提交表单的校验

    基础知识: 原始提交如下: <form action="<%=basePath %>puser/register" method="post" ...

  5. Silverlight调用的JS方法返回对象数组的处理方法

    最近在做Silverlight应用,需要用Silverlight调用页面中Javascript方法.这个JS方法返回一个对象数组给Silverlight.对于这个对象数组怎么在Silverlight里 ...

  6. 如何在java中调用js方法

    [java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...

  7. android 连续调用js方法,Android的WebView中的JavascriptInterface:对JS的多次调用会导致死锁...

    这是我用过的整个Java代码.我将在下面更详细地解释... public class Test7 extends Activity { //debug private final static Str ...

  8. 用服务器控件在后台调用前台客户端JS方法

    今天试着研究了一下服务器控件来控制JS代码(可见不仅仅HTML控件可以调用JS方法,服务器控件也可以调用JS方法), 本人觉得有点实用,现分享如下: 前台代码如下: js方法:<script l ...

  9. Java调用js方法

    js函数保存在String字符串中 package com.netease.qiyu.test.datastageservice.service.impl;import com.netease.qiy ...

  10. 异步加载js文件并执行js方法:实现异步处理网页的复杂效果

    异步加载js文件并执行js方法:实现异步处理网页的复杂效果 有这么一个场景,当你的网页页面效果过多就会造成了打开页面的速度变得缓慢,长时间处于加载的状态,这样的效果通常会让用户感到不友好,通常的处理方 ...

最新文章

  1. Science:科学家亲眼看到细菌产生耐药性的全过程(视频)
  2. java.util.concurrent包
  3. Map集合知识点(炸窝)
  4. 关于mysql的一些时间格式和字符的问题
  5. 数字电路 模拟电路 先学哪个_国外经典电子资料:电子电路分析与设计
  6. python print输出字符串报错
  7. java 索引实现,Java创建ES索引实现
  8. CCF201803-4 棋局评估(100分)【博弈+DFS】
  9. Nginx负载均衡与健康检查
  10. 安卓熄屏录像_最屌免费安卓Android屏幕录像软件 (免ROOT)
  11. 阿里规范说MySQL单表行数不要超过2000w,为啥?
  12. 经典面试题-Jdo 是什么
  13. MySQL 命令环境变量设置方法
  14. 个性签名代码(花了1个多小时从网上搜集以及整理)
  15. python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
  16. SAP 汇兑损益的结转
  17. unity3d求一个向量的垂直方向
  18. js实现文字霓虹灯效果
  19. LinuxStudyNote(29)-Linux常用命令(6)-压缩解压命令汇总gzip、gunzip、tar、zip、unzip、bzip2、bunzip2
  20. 虚拟化三:ESXI导出虚拟机失败 - 网络错误

热门文章

  1. 卡巴斯基安全浏览器_知名安全软件耍流氓!擅自监控用户,双十一绝不应该成为流氓软件的狂欢!...
  2. 中空格的asc码表_Excel怎么快速提取混合单元格中的中文、英文、数字?
  3. oracle processes 的大小,Oracle中sessions和processes的大小关系(10g和11g不同)
  4. html每访问一次显示1到10,开方表1到100 根号1到10 分别约等于多少
  5. PySpark-Recipes : I/O操作(txt, json, hdfs, csv...)
  6. Pandas:DataFrame对象的基础操作
  7. unity3d android自动打包,Unity自动化打包(二)
  8. CTR预估之outbrain
  9. 297.二叉树的序列化与反序列化
  10. 用递归法计算从n个人中选择k个人的组合数