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获取鼠标坐标的实例方法
Jul 18 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
js表单验证实例讲解
Mar 31 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
Angularjs 设置全局变量的方法总结
Oct 20 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 Javascript
JavaScript流程控制(分支)
Dec 06 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获取网卡地址的代码
2008/04/09 PHP
php error_log 函数的使用
2009/04/13 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
javascript日期格式化示例分享
2014/03/05 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
Python类的用法实例浅析
2015/05/27 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
python字符串查找函数的用法详解
2019/07/08 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
实习医生自我评价
2013/09/22 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
加强作风建设心得体会
2014/10/22 职场文书
学术会议邀请函
2015/01/30 职场文书
环卫工作个人总结
2015/03/04 职场文书
在校学生证明格式
2015/06/24 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS