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 select操作的日期联动实现代码
Dec 06 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
Dec 18 Javascript
javascript构造函数以及原型对象的理解
Jan 13 Javascript
JS实现前端页面的搜索功能
Jun 12 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
JS函数基本定义与用法示例
Jan 15 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 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中设置index.php文件为只读的方法
2013/02/06 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP二维数组去重算法
2016/12/17 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
js数组操作学习总结
2013/11/04 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
房地产销售大学生自我评价分享
2013/11/11 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
有关打架的检讨书
2014/01/25 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
加油口号大全
2014/06/13 职场文书
党委班子对照检查材料
2014/08/19 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技