栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何检查对象在JavaScript中是否具有特定属性?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何检查对象在JavaScript中是否具有特定属性?

我对所给出的答案感到困惑-他们中的大多数都是完全错误的。当然,您可以拥有具有未定义,空值或假值的对象属性。因此,简单地将属性检查减少到

typeofthis[property]
甚至更糟,
x.key
将给您完全误导的结果。

这取决于您要查找的内容。如果您想知道一个对象是否物理上包含一个属性(并且它不是来自原型链的某个地方),那么您

object.hasOwnProperty
就可以这样做。所有现代的浏览器都支持它。(在Safari的较早版本(2.0.1和更早的版本中不存在),但是那些浏览器版本已经很少使用了。)

如果您要查找的是对象上具有可迭代的属性(当您遍历该对象的属性时,它将出现),则可以这样做:

prop in object
将为您带来所需的效果。

因为使用

hasOwnProperty
可能是您想要的,并且考虑到您可能需要一种备用方法,所以我向您提供以下解决方案:

var obj = {    a: undefined,    b: null,    c: false};// a, b, c all foundfor ( var prop in obj ) {    document.writeln( "Object1: " + prop );}function Class(){    this.a = undefined;    this.b = null;    this.c = false;}Class.prototype = {    a: undefined,    b: true,    c: true,    d: true,    e: true};var obj2 = new Class();// a, b, c, d, e foundfor ( var prop in obj2 ) {    document.writeln( "Object2: " + prop );}function hasOwnProperty(obj, prop) {    var proto = obj.__proto__ || obj.constructor.prototype;    return (prop in obj) &&        (!(prop in proto) || proto[prop] !== obj[prop]);}if ( Object.prototype.hasOwnProperty ) {    var hasOwnProperty = function(obj, prop) {        return obj.hasOwnProperty(prop);    }}// a, b, c found in modern browsers// b, c found in Safari 2.0.1 and olderfor ( var prop in obj2 ) {    if ( hasOwnProperty(obj2, prop) ) {        document.writeln( "Object2 w/ hasOwn: " + prop );    }}

上面是对的跨浏览器解决方案

hasOwnProperty
,但有一个警告:无法区分原型和实例上具有相同属性的情况-
只是假设它来自原型。您可以根据自己的情况将其更改为宽容或严格,但是至少这应该会有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号