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函数
May 27 Javascript
JSON 学习之完全手册 图文
May 29 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
jQuery的.live()和.die() 使用介绍
Sep 10 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
Dec 25 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
Feb 05 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
jQuery事件用法详解
Oct 06 Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 Javascript
node.js制作一个简单的登录拦截器
Feb 10 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 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
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
javascript中scrollTop详解
2015/04/13 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python生成随机图形验证码详解
2017/11/08 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python中的数据结构比较
2019/05/13 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
python如何实现异步调用函数执行
2019/07/08 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Python实现异步IO的示例
2020/11/05 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
会计系个人求职信范文分享
2013/12/20 职场文书
英语商务邀请函范文
2014/01/16 职场文书
小学生新学期寄语
2014/01/19 职场文书
合伙经营协议书
2014/04/18 职场文书
认错检讨书
2014/10/02 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL