JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()


Posted in Javascript onAugust 11, 2016

首先了解枚举属性

一般利用for~in遍历

var a = [1,2,3];
for(var i in a){
console.log(a[i]);
}
or
var o = {p1:1,p2:2};
for(var i in o){
console.log(i+'='+o[i]);
}//p1=1;p2=2;

<1>并不是所有的属性都会在for~in遍历中显示。比如(数组的)length属性和constructor属性。那些已经被显示的属性被称为可枚举的,可以通过各个对象所提供的propertyIsEnumerable()方法来判断其中有哪些可枚举的属性;

<2>原型链中的各个属性也会被显示出来,前提是它们可枚举的,hasOwnProperty()来判断一个属性是对象自身属性还是原型属性;

<3>对于所有的原型属性,propertyIsEnumerable()都会返回false,包括那些在for~in遍历中可枚举的属性。

js代码示例

function dog(name,color){
this.name = name;
this.color = color;
this.someMethod = function(){return 1;}
}
dog.prototype.price=100;
dog.prototype.rating=3;
var newDog = new dog("doggg","yellow");
for(var prop in newDog){
console.log(prop+'='+newDog[prop]);
}
//name=doggg
//color=yellow
//someMethod=function (){return 1;}
//price=100
//rating=3
newDog.hasOwnProperty('name');//true;
newDog.hasOwnProperty('price');//false;

只显示自身属性

for(var prop in newDog){
if(newDog.hasOwnProperty(prop )){
console.log(prop+'='+newDog[prop]);
}
}
newDog.propertyIsEnumerable('name');//true
newDog.propertyIsEnumerable('constructor');//false

注意:内建属性和方法大部分是不可枚举的

任何来自原型链中的属性也是不可枚举的

如果propertyIsEnumerable()的调用是来自原型链上的某个对象,那么该对象中的属性是可枚举的

newDog.constructor.prototype.propertyIsEnumerable('price');//true

isPrototypeOf():每个对象都有,表示当前对象是否是另一个对象的原型

js代码示例

var monkey = {
hair:true,
feeds:'bananas',
breathes:'air'
};
function Human(name){
this.name = name;
}
Human.prototype = monkey;
var george = new Human('George');
monkey.isPrototypeOf(george);//true

以上所述是小编给大家介绍的JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf(),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS 对输入框进行限制(常用的都有)
Jul 30 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
js倒计时抢购实例
Dec 20 Javascript
javascript如何定义对象数组
Jun 07 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
servlet+jquery实现文件上传进度条示例代码
Jan 25 Javascript
静态页面实现 include 引入公用代码的示例
Sep 25 Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
JS实现简易图片自动轮播
Oct 16 Javascript
基于js对象,操作属性、方法详解
Aug 11 #Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 #Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 #Javascript
浅谈js中对象的使用
Aug 11 #Javascript
js倒计时简单实现代码
Aug 11 #Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 #Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 #Javascript
You might like
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
前台js调用后台方法示例
2013/12/02 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
Vue组件化开发思考
2018/02/02 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python中断多重循环的思路总结
2019/10/04 Python
keras得到每层的系数方式
2020/06/15 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
酒店中秋节活动方案
2014/01/31 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
党员演讲稿
2014/09/04 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android