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

上海网站优化推广网站建设后台系统有哪些

上海网站优化推广,网站建设后台系统有哪些,wordpress加密法,七牛云存储 wordpress插件在 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/538515.html

相关文章:

  • 门户做网站公司网站费用构成需要多少钱
  • 搜狗网站推广做网站怎样盈利
  • 响应式网站和传统网站异同wordpress 搬家教程
  • 下载了网站源码营销型科技网站
  • 怎样解析网站域名网络营销公司排名
  • 网站cname京东网站建设流程和结构图
  • python做网站源码浏阳做网站
  • 网站cms在线识别建立网站的主要方式
  • ae做网站导航我的世界电影怎么做的视频网站
  • 如何跟客户销售做网站唐山手机网站建设
  • vue做移动端网站与pc端有什么区别专做水果的网站
  • 网站怎么做的支付宝企业为什么要管理
  • 注册公司一年需要多少费用seo搜索优化公司排名
  • 哪些网站是专做女性护肤品中国500强企业名称
  • 东方建设官方网站网站的建设与运营
  • 太原网站推广服务互联网兼职做网站维护
  • 怎么做网站门户企业网站需要响应式
  • 西安高端品牌网站有哪些企业可以做招聘的网站
  • 半江红网站建设室内设计学校哪些比较好
  • seo外贸仿牌网站换域名做餐饮类网站用哪个程序
  • 电商哪个平台好优化公司组织架构
  • 甘德县wap网站建设公司互联网去哪里学
  • 做群头像的网站在线制作中律之窗网站建设
  • 怀化市鹤城区建设局网站济南哪里做网站
  • 网站建设是啥wordpress邮件重置密码错误
  • 常州网站建设key de在线网站建设哪家好
  • php是用来做网站的吗百度推广自己做网站吗
  • 减肥网站开发目的纹身网站建设案例
  • 大连网站制做公司微软网站开发软件
  • 北京齐力众信网站建设主页网址