`
hzxulei
  • 浏览: 8618 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hasOwnProperty 函数

阅读更多
为了判断一个对象是否包含自定义属性而不是原型链上的属性, 我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。

注意: 通过判断一个属性是否 undefined 是不够的。 因为一个属性可能确实存在,只不过它的值被设置为 undefined。

hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数。
// 修改Object.prototypeObject.prototype.bar = 1; 
var foo = {goo: undefined};
foo.bar; // 1
'bar' in foo; // true
foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true



只有 hasOwnProperty 可以给出正确和期望的结果,这在遍历对象的属性时会很有用。 没有其它方法可以用来排除原型链上的属性,而不是定义在对象自身上的属性。


hasOwnProperty 作为属性

JavaScript 不会保护 hasOwnProperty 被非法占用,因此如果一个对象碰巧存在这个属性, 就需要使用外部的 hasOwnProperty 函数来获取正确的结果。

var foo = {    hasOwnProperty: function() {      
  return false;    }, 
   bar: 'Here be dragons'};
foo.hasOwnProperty('bar'); // 总是返回 false
// 使用其它对象的 hasOwnProperty,并将其上下为设置为foo{}.hasOwnProperty.call(foo, 'bar'); // true


结论

当检查对象上某个属性是否存在时,hasOwnProperty 是唯一可用的方法。 同时在使用 for in loop 遍历对象时,推荐总是使用 hasOwnProperty 方法, 这将会避免原型对象扩展带来的干扰。
分享到:
评论

相关推荐

    理解JAVASCRIPT中hasOwnProperty()的作用

    JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。 hasOwnProperty()使用方法: object.hasOwnProperty(proName)其中参数object是必选项。一个对象的实例。proName是必...

    JavaScript hasOwnProperty() 函数实例详解

    JavaScript中的`hasOwnProperty()`函数是用于检测对象是否在其自身的属性列表中包含某个特定的属性,而不考虑该属性是否存在于原型链上。这个方法是Object对象的一个内置方法,因此所有JavaScript对象(除了null)都...

    浅析hasOwnProperty方法的应用

    JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。 使用方法:object.hasOwnProperty(proName) 其中参数object是必选项。一个对象的实例。proName是必选项。一个属性名称...

    js中hasOwnProperty的属性及实例用法详解.docx

    在这种情况下,需要使用外部的 hasOwnProperty 函数来获取正确的结果。 var foo = { hasOwnProperty: function() { return false; }, bar: 'Here be dragons' }; foo.hasOwnProperty('bar'); // 始终返回 false...

    javascript中hasOwnProperty() 方法使用指南

    hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。 语法 obj.hasOwnProperty(prop) 参数 •prop •要检测的属性名称。 描述 所有继承了 Object.prototype 的对象都会从原型链上继承到 ...

    js中的hasOwnProperty和isPrototypeOf方法使用实例

    需要注意的是,对于siteAdmin的原型对象调用hasOwnProperty("showAdmin")返回true,这是因为showAdmin是这个原型对象自身的一个属性,但siteAdmin.prototype.hasOwnProperty("siteUrl")返回false,因为siteUrl是在...

    jquery AJAX 回调函数取JSON成功代码

    if (data.hasOwnProperty(key)) { $('#output').append('<p>' + key + ': ' + data[key] + '</p>'); } } }, error: function(jqXHR, textStatus, errorThrown) { console.error('请求失败:', textStatus, ', ...

    JavaScript中in和hasOwnProperty区别详解

    在JavaScript中,`in`操作符和`hasOwnProperty()`方法都是用来检查对象是否拥有特定的属性,但它们之间存在显著的差异。理解这些差异对于精确地处理对象的属性至关重要。 首先,`in`操作符的工作原理是遍历对象及其...

    js的hasownproperty使用示例

    JavaScript中的hasOwnProperty方法是一个非常实用的内置对象方法,用于检查对象是否包含特定的自身属性(不包括从原型链继承的属性)。当我们需要遍历一个对象的所有属性时,通常会使用for...in循环。然而,使用for....

    Javascript学习笔记之 对象篇(三) : hasOwnProperty

    // Poisoning Object.prototype Object.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; // 1 'bar' in foo; // true foo.hasOwnProperty('bar'); // false foo.hasOwnProperty('goo')...hasOwnProperty 作为

    js-Polyfill_Object-hasOwnProperty

    js-Polyfill_Object-...//Polyfilled & Native:console.dir([obj1.hasOwnProperty('a'),//trueobj1.hasOwnProperty('b'),//trueobj1.hasOwnProperty('c'),//falseobj2.hasOwnProperty('a'),//trueobj2.hasOwnProperty

    详谈js使用in和hasOwnProperty获取对象属性的区别

    在这段代码中,我们首先定义了一个构造函数`Person`,并通过`prototype`为所有`Person`实例定义了一个共有的属性`name`。创建一个`Person`的新实例后,我们尝试检查属性`name`是否存在于`person`对象中。开始时,`...

    Javascript中的for in循环和hasOwnProperty结合使用

    在JavaScript编程中,`for...in`循环和`hasOwnProperty`方法是两个非常重要的概念,它们主要用于遍历和检查对象的属性。`for...in`循环遍历的是对象及其原型链上的可枚举属性,而`hasOwnProperty`方法则用于确定对象...

    jQuery each函数源码分析_.docx

    为了确保安全,开发者应当在回调函数内部使用`hasOwnProperty`方法来检查属性是否属于目标对象自身,而不是从原型继承来的。 总结,`jQuery.each`函数是jQuery库中的一个重要组成部分,它允许开发者高效且灵活地...

    浅谈js使用in和hasOwnProperty获取对象属性的区别

    在JavaScript中,获取对象属性的方法主要有两种:`in`运算符和`hasOwnProperty()`方法。它们之间存在着明显的差异,理解这些差异对于编写高效且准确的JavaScript代码至关重要。 首先,`in`运算符用于检查给定的对象...

    js代码-去重:filter + hasOwnProperty

    回调函数内部,`slice(0, index)` 创建了一个从数组开始到当前索引(不包括当前索引)的新数组,然后我们用这个新数组调用`hasOwnProperty()`,检查当前元素在之前的位置是否存在。如果不存在,`hasOwnProperty()` ...

    Js中使用hasOwnProperty方法检索ajax响应对象的例子.docx

    在上面的代码中,`saveObj`函数接收一个值`val`,并检查`data`对象是否已经拥有这个属性。如果存在,就从缓存中直接读取数据;如果不存在,就发起一个AJAX请求获取新的数据并将其存入缓存。 关于内存占用的担忧,...

    实用的JavaScript函数(jsp).rar

    - `hasOwnProperty()`: 检查对象是否具有指定的自身属性,而非来自原型链。 - `JSON.stringify()`: 将JavaScript值转换为JSON字符串。 6. **异步编程**: - `Promise`: 用于异步计算的构造函数,代表一个可能...

Global site tag (gtag.js) - Google Analytics