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 AjaxQueue改进步骤
Oct 06 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
利用Angularjs和Bootstrap前端开发案例实战
Aug 27 Javascript
javascript的函数劫持浅析
Sep 26 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
JavaScript数据类型的存储方法详解
Aug 25 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
JS获取本地地址及天气的方法实例小结
May 10 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php开启openssl的方法
2014/05/15 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php中的动态调用实例分析
2015/01/07 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
python赋值操作方法分享
2013/03/23 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
数控个人求职信范文
2014/02/03 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
2019财务转正述职报告
2019/06/27 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js