javascript中hasOwnProperty() 方法使用指南


Posted in Javascript onMarch 09, 2015

概述

hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。

语法
obj.hasOwnProperty(prop)

参数

•prop

•要检测的属性名称。

描述

所有继承了 Object.prototype 的对象都会从原型链上继承到 hasOwnProperty 方法,这个方法可以用来检测一个对象是否含有特定的自身属性,和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

示例

例1:使用 hasOwnProperty 方法判断某对象是否含有特定的自身属性

下面的例子检测了对象 o 是否含有自身属性 prop:

o = new Object();o.prop = 'exists';function changeO() {

  o.newprop = o.prop;

  delete o.prop;}o.hasOwnProperty('prop');   

  // 返回 true

  changeO();

   o.hasOwnProperty('prop');  

   // 返回 false

例2:自身属性和继承属性的区别

下面的例子演示了 hasOwnProperty 方法对待自身属性和继承属性的区别:

o = new Object();o.prop = 'exists';o.hasOwnProperty('prop');            

 // 返回 true

 o.hasOwnProperty('toString');         

 // 返回 false

 o.hasOwnProperty('hasOwnProperty');   

 // 返回 false

例3:遍历一个对象的所有自身属性

下面的例子演示了如何在遍历一个对象的所有属性时忽略掉继承属性,注意这里 for..in 循环只会遍历可枚举属性,这通常就是我们想要的,直接使用 Object.getOwnPropertyNames() 方法也可以实现类似的需求。

var buz = {

    fog: 'stack'};

    for (var name in buz) {

    if (buz.hasOwnProperty(name)) {

        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);

    }

    else {

        alert(name);

         // toString or something else    

         }}

例4: hasOwnProperty 方法有可能被遮蔽

如果一个对象拥有自己的 hasOwnProperty 方法, 则原型链上的同名方法会被遮蔽(shadowed):

var foo = {

    hasOwnProperty: function() {

        return false;

    },

    bar: 'Here be dragons'};foo.hasOwnProperty('bar'); 

    // 始终返回 false

    // 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法

    ({}).hasOwnProperty.call(foo, 'bar'); 

    // true

    Object.prototype.hasOwnProperty.call(foo, 'bar'); 

    // true

以上就是本文所述的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
jquery中get,post和ajax方法的使用小结
Feb 04 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
js注入 黑客之路必备!
Sep 14 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
ajax请求data遇到的问题分析
Jan 18 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 #Javascript
jQuery读取XML文件内容的方法
Mar 09 #Javascript
JQuery动态添加和删除表格行的方法
Mar 09 #Javascript
Python脚本后台运行的几种方式
Mar 09 #Javascript
JS控制表格实现一条光线流动分割行的方法
Mar 09 #Javascript
JS实现点击按钮自动增加一个单元格的方法
Mar 09 #Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 #Javascript
You might like
PHP中的正规表达式(二)
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
竞选副班长演讲稿
2014/04/24 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
大学新生入学教育方案
2014/05/16 职场文书
质量管理标语
2014/06/12 职场文书
服务行业演讲稿
2014/09/02 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
婚礼答谢词
2015/01/04 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
Vue Element plus使用方法梳理
2022/12/24 Vue.js