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 相关文章推荐
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
一行代码告别document.getElementById
Jun 01 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 Javascript
javascript的函数作用域
Nov 12 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
解决vue路由name同名,路由重复的问题
Aug 05 Javascript
微信小程序实现聊天室
Aug 21 Javascript
jQuery实现可以计算进制转换的计算器
Oct 19 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
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python快速从注释生成文档的方法
2016/12/26 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
python__name__原理及用法详解
2019/11/02 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
C#的几个面试问题
2016/05/22 面试题
房屋买卖协议书范本
2014/04/10 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
体育个人工作总结
2015/02/09 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
建国大业观后感
2015/06/01 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书