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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
详解vue 组件之间使用eventbus传值
Oct 25 Javascript
微信小程序HTTP接口请求封装代码实例
Sep 05 Javascript
js实现消灭星星(web简易版)
Mar 24 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
用header 发送cookie的php代码
2007/03/16 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php使用google地图应用实例
2014/12/31 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js