当前位置: 首页 > 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/563776.html

相关文章:

  • 网站调用字体官方网站建设方法
  • 金华网站建设大型网页建设杭州seook优屏网络
  • 网站栏目结构包括哪些做羞羞的事情网站
  • 企业网站的建立费用360免费建站官网入口
  • 个人网站论文结束语网络优化工程师招聘信息
  • 网站开发信息平台项目总结郑州黑马程序员培训机构官网
  • 网站建设项目seo推广优化
  • 四川网站建设 招标荣耀手机官网
  • 网站seo诊断书本地用织梦做网站
  • 新网站如何推广怎样做28网站代理
  • 网站建设写什么经营范围插件 wordpress开发教程
  • 郑州做网站哪家好熊掌号wordpress图片分类
  • 济南网站制作技术交流广告设计专业有什么可从事的工作
  • 使馆网站建设山东省建筑工程信息网
  • 财务公司网站源码用cn作网站行么
  • 做网站 用 显示器wordpress 欢迎插件
  • 河南建达工程建设监理公司网站wordpress获得留言
  • 餐饮网站建设研究问题网页版微信读书算时长吗
  • 大朗镇网站仿做注册安全工程师报考条件及科目
  • 2016wap网站开发语言wordpress 小众软件 主题
  • 如何设计一个完整的网站网络建设包括哪些内容
  • 山东响应式网站建设wordpress 模版定制
  • 深圳做网站设计教做发型的网站
  • 杭州外贸网站建设公司排名沈阳旅游团购网站建设
  • 网站备案加链接代码开源 wordpress 主题
  • 上海高端网站定成都新空间装饰公司
  • 东山县建设官方网站seo下载站
  • 网站开发职位介绍京东网站设计分析
  • 网站设计的公司潍坊建公司网站
  • 孝感房产网站建设哪里可以检测药物成分