js属性对象的hasOwnProperty方法的使用


Posted in Javascript onFebruary 05, 2021

Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。

判断自身属性是否存在

var o = new Object();
o.prop = 'exists';

function changeO() {
 o.newprop = o.prop;
 delete o.prop;
}

o.hasOwnProperty('prop'); // true
changeO();
o.hasOwnProperty('prop'); // false

判断自身属性与继承属性

function foo() {
 this.name = 'foo'
 this.sayHi = function () {
  console.log('Say Hi')
 }
}

foo.prototype.sayGoodBy = function () {
 console.log('Say Good By')
}

let myPro = new foo()

console.log(myPro.name) // foo
console.log(myPro.hasOwnProperty('name')) // true
console.log(myPro.hasOwnProperty('toString')) // false
console.log(myPro.hasOwnProperty('hasOwnProperty')) // fasle
console.log(myPro.hasOwnProperty('sayHi')) // true
console.log(myPro.hasOwnProperty('sayGoodBy')) // false
console.log('sayGoodBy' in myPro) // true

遍历一个对象的所有自身属性

在看开源项目的过程中,经常会看到类似如下的源码。for...in循环对象的所有枚举属性,然后再使用hasOwnProperty()方法来忽略继承属性。

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
  }
}

注意 hasOwnProperty 作为属性名

JavaScript 并没有保护 hasOwnProperty 属性名,因此,可能存在于一个包含此属性名的对象,有必要使用一个可扩展的hasOwnProperty方法来获取正确的结果:

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // 始终返回 false

// 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法
// 使用另一个对象的`hasOwnProperty` 并且call
({}).hasOwnProperty.call(foo, 'bar'); // true

// 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

参考链接

到此这篇关于js属性对象的hasOwnProperty方法的使用的文章就介绍到这了,更多相关js hasOwnProperty内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
关于element的表单组件整理笔记
Feb 05 #Javascript
详解JavaScript中的this指向问题
Feb 05 #Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 #Javascript
详解javascript脚本何时会被执行
Feb 05 #Javascript
前端如何实现动画过渡效果
Feb 05 #Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 #Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 #jQuery
You might like
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
python解析html开发库pyquery使用方法
2014/02/07 Python
Python的print用法示例
2014/02/11 Python
python实现探测socket和web服务示例
2014/03/28 Python
Python3字符串学习教程
2015/08/20 Python
Python书单 不将就
2017/07/11 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
python字符串的index和find的区别详解
2020/06/20 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
付款委托书范本
2014/04/04 职场文书
自强之星事迹材料
2014/05/12 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python