JavaScript hasOwnProperty() 方法是 Object原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继承 hasOwnProperty() 方法。

hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。换句话说,hasOwnProperty() 方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回 true

示例1

function F() {  //自定义数据类型this.name = "自有属性";
}
F.prototype.nickname= "继承属性";
var f = new F();  //实例化对象
console.log(f.hasOwnProperty("name"));  //返回true,说明当前调用的 name是自有属性
console.log(f.hasOwnProperty("nickname"));//返回false,说明当前调用的 nickname是继承属性
console.log(f.name);  //返回字符串“自有属性”

凡是构造函数的原型属性(原型对象包含的属性),都是继承属性,使用 hasOwnProperty() 方法检测时,都会返回 false。

示例2

var d = Date;
console.log(d.hasOwnProperty("toString"));  //返回false,说明toString()是Date的自有属性
var d = Date.prototype;
console.log(d.hasOwnProperty("toString"));  //返回true,说明toString()是Date.prototype属性

hasOwnProperty() 方法只能判断指定对象中是否包含指定名称的属性,无法检查对象原型链中是否包含某个属性,所以能够检测出来的属性必须是对象成员。

JavaScript 并没有保护 hasOwnProperty
这个属性名,因此,当某个对象可能自有一个占用该属性名的属性时,就需要使用外部的 hasOwnProperty 获得正确的结果:

var foo = {hasOwnProperty: function() {return false;},bar: 'Here be dragons'
};foo.hasOwnProperty('bar'); // 始终返回 false// 如果担心这种情况,
// 可以直接使用原型链上真正的 hasOwnProperty 方法
({}).hasOwnProperty.call(foo, 'bar'); // true// 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

hasOwnProperty 1相关推荐

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

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

  2. js中的hasOwnProperty和isPrototypeOf方法

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员. isPrototypeO ...

  3. 理解hasOwnProperty()的作用

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.格式如下:  Js代码  ...

  4. hasOwnProperty

    hasOwnProperty() 方法会返回一个布尔值,这个方法可以用来检测一个对象是否含有特定的自身(非继承)属性. 1.for...in循环时为什么要在里面加上if(obj.hasOwnPrope ...

  5. hasOwnProperty()

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.格式如下: object. ...

  6. JavaScript 中 obj.hasOwnProperty(prop) 方法

    语法 obj.hasOwnProperty(prop) 参数 prop 要检测的属性的 String 字符串形式表示的名称,或者 Symbol. 返回值 用来判断某个对象是否含有指定的属性的布尔值 B ...

  7. assign复制对象_JavaScript标准对象:assign,values,hasOwnProperty和getOwnPropertyNames方法介绍...

    assign复制对象 In JavaScript, the Object data type is used to store key value pairs, and like the Array ...

  8. js属性对象的hasOwnProperty方法

    IE 5.5+.FireFox.Chrome.Safari.Opera等主流浏览器均支持该函数. Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承) ...

  9. hasOwnProperty和isPrototypeOf

    hasOwnProperty和isPrototypeOf hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本 ...

  10. hasOwnProperty.call

    JavaScript 并没有保护 hasOwnProperty 这个属性名,因此,当某个对象可能自有一个占用该属性名的属性时,就需要使用外部的 hasOwnProperty 获得正确的结果: var ...

最新文章

  1. iBatis学习第一天
  2. HDU4392(反素数强大的模版)
  3. python 数据流中的移动平均值_剑指Offer-41-数据流中的中位数
  4. bzoj 3881 [Coci2015]Divljak——LCT维护parent树链并
  5. IT历史:IT史重大失败教训
  6. 为吸引三星建170亿美元芯片厂,德克萨斯州将提供大额财产税减免
  7. lvs+keepalived+nginx实现高性能负载均衡集群 高性能jsp集群
  8. LeetCode 3.无重复字符的最长字串(滑动窗口)
  9. Cinder组件解析
  10. 在装完Linux系统之后自己去修改Swap分区的大小(两种方法)
  11. 50预训练权重_MMDetection笔记:修改预训练模型权重类别数
  12. 一、目标检测入门VOC2012
  13. 抖音视频去水印,获取无水印原视频的方法及过程分析。附上代码截图,很简单,主要是分析过程废了些时间。
  14. pop3邮箱服务器地址,常用的邮箱服务器(SMTP、POP3)地址、端口
  15. 计算机网络分层结构概述
  16. [Matlab]中solve函数与subs函数的使用方法
  17. MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
  18. 用谷歌按钮登录_使用非常简单的设置即可登录Google的按钮
  19. usb无线网卡和U盘同时使用
  20. 实现PPT的在线预览(动态,及转PDF)

热门文章

  1. 钛阀门市场深度研究分析报告
  2. 求一个无序数组的中位数。
  3. 微信小程序扫一扫功能实现
  4. STM32F042 CAN使用例子
  5. XSS、SSRF、CSRF、XXE 漏洞的区别
  6. GLTF文件格式详解
  7. 通过Xcode断点加载Reveal Server
  8. 机器学习-数据科学库 11 泰坦尼克号生还情况案例
  9. 大数据揭秘:低学历者发财的概率有多大?结果很吃惊
  10. Unity基础 3.3 2D物理系统 :刚体