当前位置: 首页 > wzjs >正文

上海网站优化推广网站建设吗

上海网站优化推广,网站建设吗,网站投注员怎么做,中国菲律宾比分在 JavaScript 中,判断对象是否拥有某个属性(区分自身属性和原型链属性)可以使用以下方法: 1. 判断属性是否存在(不区分自身或原型链) 使用 in 操作符,检查对象或其原型链上是否存在指定属性&a…

在 JavaScript 中,判断对象是否拥有某个属性(区分自身属性和原型链属性)可以使用以下方法:


1. 判断属性是否存在(不区分自身或原型链)

使用 in 操作符,检查对象或其原型链上是否存在指定属性:

const obj = { a: 1 };
console.log("a" in obj); // true(自身属性)
console.log("toString" in obj); // true(继承自 Object.prototype)

2. 判断属性是否为自身属性

使用 Object.prototype.hasOwnProperty,检查属性是否直接定义在对象上(不遍历原型链):

const obj = { a: 1 };
console.log(obj.hasOwnProperty("a")); // true(自身属性)
console.log(obj.hasOwnProperty("toString")); // false(原型链属性)
处理边缘情况

若对象可能覆盖或未继承 hasOwnProperty 方法(如 Object.create(null)),需安全调用:

const obj = Object.create(null);
obj.a = 1;// 直接调用 obj.hasOwnProperty 会报错(obj 无该方法)
console.log(Object.prototype.hasOwnProperty.call(obj, "a")); // true

3. 综合判断属性来源

结合 inhasOwnProperty,明确属性的来源:

function checkProperty(obj, key) {if (key in obj) {if (obj.hasOwnProperty(key)) {return "自身属性";} else {return "原型链属性";}} else {return "不存在";}
}const parent = { inheritedProp: "父类属性" };
const child = Object.create(parent);
child.ownProp = "自身属性";console.log(checkProperty(child, "ownProp")); // "自身属性"
console.log(checkProperty(child, "inheritedProp")); // "原型链属性"
console.log(checkProperty(child, "nonexistent")); // "不存在"

4. 其他方法

Object.getOwnPropertyNames()

获取对象所有自身属性名(包括不可枚举属性,不包含原型链属性):

const obj = { a: 1 };
console.log(Object.getOwnPropertyNames(obj)); // ["a"]
Reflect.ownKeys()

获取对象所有自身属性名(包括 Symbol 类型和不可枚举属性):

const obj = { [Symbol("key")]: "value", a: 1 };
console.log(Reflect.ownKeys(obj)); // ["a", Symbol(key)]

总结

方法作用示例
key in obj检查属性是否存在(自身或原型链)"toString" in {}true
obj.hasOwnProperty(key)检查是否为自身属性{}.hasOwnProperty("toString")false
Object.getOwnPropertyNames(obj)获取所有自身属性名(含不可枚举)Object.getOwnPropertyNames([])["length"]
Reflect.ownKeys(obj)获取所有自身属性名(含 Symbol 和不可枚举)Reflect.ownKeys({ [Symbol()]: 1 })[Symbol()]

注意事项

  • 避免直接修改 __proto__
    使用 Object.getPrototypeOf(obj)Object.setPrototypeOf(obj, proto) 替代。
  • 不可枚举属性
    for...inObject.keys() 会忽略不可枚举属性,而 Object.getOwnPropertyNames()Reflect.ownKeys() 会包含它们。
http://www.dtcms.com/wzjs/785460.html

相关文章:

  • 什么网站可以找手工活做wordpress文章自定义常见问题模块
  • 网站备案 假通信地址企业被网站骗做会员
  • 绵阳 网站开发 公司乌托邦网站建设
  • 广州市研发网站建设平台网站建设填空题
  • 可以看的网站的浏览器有哪些网站接入服务提供单位
  • 苏州市城乡和建设局网站首页东莞软件开发培训
  • 网站建立企业wordpress一直发布失败
  • 最好的网站建设公司网站设计与制作用什么软件
  • wordpress定时网站地图东莞做外贸网站公司
  • 无锡新区做网站公司全国企业查询系统
  • 公司网站规划案例怀化网站优化哪个好
  • 内蒙建设厅官方网站python做个人网站
  • 肇东市网站怎么在网站上面做悬浮广告
  • 贵阳网站建设培训班个人网站建设方案策划书
  • 哪个公司网站建设好wordpress 只发一句话
  • wordpress入门建站苏州城乡建设局网站
  • 什么网站做优化最好?江西赣州简介
  • 石家庄好用的招聘网站网站空间和域名区别
  • 设计asp网站俄语网站建设公司
  • 北京响应式网站制作公司找人做网站如何担保
  • 南宁网站建设公司比优建站seo是广告投放吗
  • 网站推广途径及要点国家企业信用查询系统
  • 做兼职在什么网站找比较好安徽安庆旅游必去十大景点
  • 有什么做h5的网站建企业网站的步骤
  • 邵阳整站优化微信小程序开发流程详细
  • 腾讯云网站备案武进网站建设
  • 教做衣服网站受欢迎的网站建设案例
  • 网站数据库5g可以找网图的软件
  • 合肥市建设厅官方网站discuz论坛
  • 湛江免费建站公司杭州企业网站