javascript中hasOwnProperty() 方法使用指南
来源: 阅读:747 次 日期:2015-03-11 14:44:17
温馨提示: 小编为您整理了“javascript中hasOwnProperty() 方法使用指南”,方便广大网友查阅!

这篇文章主要详细介绍了javascript中hasOwnProperty() 方法使用指南,非常的全面,推荐给有需要的小伙伴参考下。

概述

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

以上就是本文所述的全部内容了,希望大家能够喜欢。

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map