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 相关文章推荐
toggle()隐藏问题的解决方法
Feb 17 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 Javascript
基于jQuery实现的幻灯图片切换
Dec 02 Javascript
jQuery基于Ajax方式提交表单功能示例
Feb 10 Javascript
H5上传本地图片并预览功能
May 08 Javascript
Angular实现图片裁剪工具ngImgCrop实践
Aug 17 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
Feb 23 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
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将日期格式转换成xx天前的格式
2015/04/16 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
详解在React里使用"Vuex"
2018/04/02 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
Python入门篇之函数
2014/10/20 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python实现类之间的方法互相调用
2018/04/29 Python
python检索特定内容的文本文件实例
2018/06/05 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
入党积极分子介绍信
2014/01/17 职场文书
精彩广告词大全
2014/03/19 职场文书
投标服务承诺书
2014/05/28 职场文书
上党课的心得体会
2014/09/02 职场文书
授权委托书怎么写
2014/09/25 职场文书
电力安全学习心得体会
2016/01/18 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
解析MySQL索引的作用
2022/03/03 MySQL