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 相关文章推荐
HTML上传控件取消选择
Mar 06 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
纯javascript版日历控件
Nov 24 Javascript
微信小程序 获取session_key和openid的实例
Aug 17 Javascript
JS库之Waypoints的用法详解
Sep 13 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
Oct 14 jQuery
详解webpack-dev-server使用http-proxy解决跨域问题
Jan 13 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 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
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
session 加入redis的实现代码
2016/07/15 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
js 省地市级联选择
2010/02/07 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Python如何为图片添加水印
2016/11/25 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Python如何在DataFrame增加数值
2020/02/14 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
联强国际笔试题面试题
2013/07/10 面试题
八一演出活动方案
2014/02/03 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
2014年少先队工作总结
2014/12/03 职场文书
金陵十三钗观后感
2015/06/04 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js