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 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
对 jQuery 中 data 方法的误解分析
Jun 18 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
jquery结合CSS使用validate实现漂亮的验证
Jan 29 Javascript
js实现缓冲运动效果的方法
Apr 10 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
Dec 08 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
May 08 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
JavaScript中如何调用Java方法
Sep 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判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
用python写PDF转换器的实现
2020/10/29 Python
Python self用法详解
2020/11/28 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
2015年幼儿园毕业感言
2014/02/12 职场文书
八年级英语教学反思
2016/02/15 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python