hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

例如:obj.hasOwnProperty(prop)

1. 所有 Object 的对象都会有 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

     var obj = function(){}obj.target = function(){}obj.prototype.target_proto = function(){}console.log(obj.hasOwnProperty('target'))     console.log(obj.hasOwnProperty('target_proto'))

2. 继承到的属性全为 false

 var obj = {target: '123'}console.log(obj.hasOwnProperty('target'))     // trueconsole.log(obj.hasOwnProperty('toString'))   // falseconsole.log(obj.hasOwnProperty('hasOwnProperty'))   // false

3.  遍历对象的自身属性

遍历一个对象的所有属性时忽略掉继承属性,这里因为for... in 循环无法遍历到不可枚举属性所以如果是自身属性的不枚举属性也是无法遍历返回得到的。

var obj = function(){this.name = '0'}obj.prototype.fu = function(){       }var objk = new obj()console.log(objk)Object.defineProperty(objk,'kk',{value: 'kk',enumerable: false})for(var key in objk){if(objk.hasOwnProperty(key)){console.log('属性' + key , '属性值' + objk[key])}else{console.log('未找到属性' + key)}}console.log(objk.hasOwnProperty('kk'))

4. 使用 hasOwnProperty 作为属性名

由于jacascript是不保护 hasOwnProperty 属性名的,因此某个对像肯能存在这个属性名。此时需要使用 object.prototype 的属性来判断

Object.prototype.hasOwnPorperty.call(objk,'kk')

5. 如果像直接获取对象的所有属性的数组可用Object.getOwnPropertyNames() 来获取

本文所讨论内容多参考于

Object.prototype.hasOwnProperty()

JavaScript中的可枚举属性与不可枚举属性

JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈

转载于:https://www.cnblogs.com/yeujuan/p/9959956.html

【js】Object.prototype.hasOwnProperty()相关推荐

  1. 【Javascript】Object.prototype

    几乎所有的 JavaScript 对象都是 Object 的实例:一个典型的对象继承了Object.prototype的属性(包括方法). 存在两种不具备原型链的创建Object的方法:Object. ...

  2. 【javaScript】Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() 区别与优化层面的比较

    1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...

  3. 【JS】307- 复习 Object.assign 原理及其实现

    点击上方"前端自习课"关注,学习起来~ 引言 上篇文章介绍了赋值.浅拷贝和深拷贝,其中介绍了很多赋值和浅拷贝的相关知识以及两者区别,限于篇幅只介绍了一种常用深拷贝方案. 本篇文章会 ...

  4. 【JS】教你如何在对象内任意位置插入任意属性

    [JS]教你如何在对象内任意位置插入任意属性 如果你不知道我写这篇文章的目的是什么,那不妨想想这样一个场景 var obj = {a: "A",c: "C",d ...

  5. 【JS】WTool.js 基于JQuery的工具集 (写着玩的)

    [JS]WTool.js  基于JQuery的工具集 (写着玩的) // console.info("加载WTool中...")/*** 威工具1.基于Jquery开发2.参考VU ...

  6. 【JS】日期Date如何格式化为年月日yyyy-MM-dd hh:mm:ss

    如何将日期Date转换为指定的格式:如 yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd ? 可以为Date原型添加如下的方法: Date.prototype.format = fu ...

  7. javascript java 传参_[Java教程]【JS】JavaScript中的参数传递

    [Java教程][JS]JavaScript中的参数传递 0 2017-02-18 00:00:24 ECMAScript中所有函数的参数都是按值传递的,简单讲就是函数外部的值 复制给函数内部的参数, ...

  8. Why Object.prototype.hasOwnProperty.call(myObj, prop)

    为什么使用 Object.prototype.hasOwnProperty.call(myObj, prop) 而不是 myObj.hasOwnProperty(prop)? 标题太长了,掘金貌似不能 ...

  9. 【JS】JS中数值型字符串相加变成拼接字符串的解决方法

    [JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...

最新文章

  1. android qq第三方登录,Android调用第三方QQ登录代码分享
  2. 深度 | 香港中文大学(深圳)张大鹏教授:生物特征识别的新进展 | CCF-GAIR 2019
  3. 四、HTTP响应报文格式
  4. 一些解密必备知识(2)- 基础篇03|解密系列
  5. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
  6. 有线电视的现状与发展,全国一网与广电5G一体化建设
  7. 造轮子是什么意思_程序员为什么热衷于造轮子,升职加薪吗?
  8. OpenShift 4 - 使用 emptyDir/hostPath/local 类型 PV
  9. System Center Configuration Manager 2016 域准备篇(Part2)
  10. Effective C++ -----条款42:了解typename的双重意义
  11. linux中用户信息存储在,在linux中,用于存放用户信息的两个文件是/etc/passwd和/etc/shadow。()...
  12. 金蝶生成凭证模板_软件-金蝶外购入库凭证模版
  13. 自然语言处理技术的进展和趋势
  14. 手机usb口连接不上计算机,手机usb连不上电脑的原因及其处理方法
  15. 前端Jquery使用pagination.js插件进行分页
  16. 挖掘人工智能心理学新方向
  17. 几何线条科技感员工转正述职报告PPT模板-优页文档
  18. 将windows 8安装到U盘随身带!
  19. EDONG:助力中大型企业数字化转型
  20. 前端小报 - 201902月刊

热门文章

  1. 关于CDC在非控件类中的使用
  2. magento url rewrite规则
  3. springboot通过各种不同类型参数获取容器中的bean工具类
  4. WorkFlow入门Step.3—Adding Procedural Elements-For...
  5. 重新配置oralce dbconsole
  6. 【短评】街边小吃虽然味道不错,但是长期只吃零食不吃正餐会让你的孩子营养不良...
  7. JavaScript——(function(){})()立即执行函数解析
  8. ArcGIS制图技巧系列(2)地形渲染
  9. ArcGIS10.2不能打开10.6版本创建的镶嵌数据集
  10. 记一次golang中sync.Map并发创建、读取的问题