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 相关文章推荐
[HTML/CSS/Javascript]WWTJS
Sep 25 Javascript
Prototype Object对象 学习
Jul 12 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
Dec 28 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
javascript删除option选项的多种方法总结
Nov 22 Javascript
js实现鼠标点击左上角滑动菜单效果代码
Sep 06 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
requirejs按需加载angularjs文件实例
Jun 08 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 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使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python 专题四 文件基础知识
2017/03/20 Python
python requests 使用快速入门
2017/08/31 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python sorted排序方法如何实现
2020/03/31 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js