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 相关文章推荐
xml 与javascript结合的问题解决方法
Mar 24 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
JavaScript实现身份证验证代码
Feb 17 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 Javascript
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 13 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中文转拼音的实现代码
2014/02/11 PHP
php header函数的常用http头设置
2015/06/25 PHP
php递归函数怎么用才有效
2018/02/24 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
python encode和decode的妙用
2009/09/02 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python3 flask实现文件上传功能
2020/03/20 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
前台接待员岗位职责
2014/01/02 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
领导干部对照检查材料
2014/08/24 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers