javascript中hasOwnProperty() 方法使用指南
深入理解JavaScript中的hasOwnProperty()方法使用指南
概述
在JavaScript中,对象是一种复杂的数据类型,用于存储多个值作为一个整体。对象可以使用hasOwnProperty()方法来检查是否包含特定的自身属性。本文将详细介绍这个方法的使用指南,帮助大家更好地理解和应用。
语法
obj.hasOwnProperty(prop)
参数
• prop:要检测的属性名称。
描述
hasOwnProperty()方法用于检测一个对象是否含有特定的自身属性。这个方法会忽略从原型链上继承的属性,只关注对象本身的属性。这是它与in运算符的主要区别。
示例
例1:使用hasOwnProperty方法判断对象是否含有特定的自身属性
我们创建一个对象o,并给它添加一个属性prop。然后,我们定义一个函数changeO(),它修改了o的newprop属性并删除了prop属性。在删除prop属性之前和之后,我们使用hasOwnProperty()方法检查o是否包含prop属性。
代码如下:
```javascript
var o = new Object();
o.prop = 'exists';
function changeO() {
o.newprop = o.prop;
delete o.prop;
}
console.log(o.hasOwnProperty('prop')); // 返回 true
changeO();
console.log(o.hasOwnProperty('prop')); // 返回 false
```
例2:自身属性和继承属性的区别
使用hasOwnProperty方法,我们可以清楚地看到对象自身的属性和从原型链上继承的属性之间的区别。例如,所有的对象都会继承toString方法,但我们可以使用hasOwnProperty()方法确认这一点。
代码如下:
```javascript
var o = new Object();
console.log(o.hasOwnProperty('prop')); // 返回 false(没有prop属性)
console.log(o.hasOwnProperty('toString')); // 返回 false(继承了toString方法)
console.log(o.hasOwnProperty('hasOwnProperty')); // 返回 true(对象是hasOwnProperty方法的来源)
```
例3:遍历对象的所有自身属性
在遍历对象的所有属性时,我们通常只想遍历对象自身的属性,忽略从原型链上继承的属性。我们可以使用for..循环结合hasOwnProperty()方法来实现这一点。Object.getOwnPropertyNames()方法也可以达到类似的效果。
代码如下:
```javascript
var buz = { fog: 'stack'};
for (var name in buz) {
if (buz.hasOwnProperty(name)) {
console.log("这是fog(" + name + ")无疑。值:" + buz[name]); 省略中间代码 } }```以上内容可以帮助我们了解如何在JavaScript中使用hasOwnProperty()方法来判断对象是否包含特定的自身属性,以及如何区分对象的自身属性和从原型链上继承的属性。然而在实际使用中可能会遇到一些特殊情况比如:hasOwnProperty 方法有可能被遮蔽这种情况我们应该如何处理呢?请看下面的例子:例4:hasOwnProperty 方法有可能被遮蔽如果一个对象拥有自己的 hasOwnProperty 方法则会遮蔽原型链上的同名方法为了避免这种情况我们可以直接使用原型链上真正的 hasOwnProperty 方法例如: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时合理地使用hasOwnProperty()方法可以帮助我们更好地管理和操作对象。
编程语言
- javascript中hasOwnProperty() 方法使用指南
- 浅析php面向对象public private protected 访问修饰符
- jquery+CSS3实现淘宝移动网页菜单效果
- DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)
- jQuery中DOM操作原则实例分析
- php使用composer常见问题及解决办法
- php简单日历函数
- 使用BootStrap进行轮播图的制作
- PHP原生函数一定好吗?
- javascript 正则表达式去空行方法
- PHP使用redis实现统计缓存mysql压力的方法
- ASP.NET中 PlaceHolder 控件的使用方法
- 解析php 版获取重定向后的地址(代码)
- PHP多进程简单实例小结
- Lumen timezone 时区设置方法(慢了8个小时)
- PHPMailer ThinkPHP实现自动发送邮件功能