探索 hasOwnProperty:处理对象属性的关键(上)

img

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • 介绍 `hasOwnProperty` 的重要性和应用场景
  • 二、 `hasOwnProperty` 的定义与作用
    • 解释 `hasOwnProperty` 方法的定义
    • 说明 `hasOwnProperty` 的作用:检查一个对象是否自身拥有指定的属性
  • 三、 `hasOwnProperty` 的使用示例
    • 展示如何使用 `hasOwnProperty` 方法来检查对象的属性

一、引言

介绍 hasOwnProperty 的重要性和应用场景

hasOwnProperty() 是 JavaScript 中的一个方法,用于检查一个对象是否包含其自身的属性,而不考虑从原型链中继承的属性。

重要性:

  1. 准确性hasOwnProperty() 可以准确地判断一个属性是否是对象本身拥有的,而不是从原型链上继承的。这对于处理对象的属性时非常重要,避免了误判。

  2. 防止原型链污染:通过使用 hasOwnProperty(),可以确保在操作对象的属性时,不会意外地访问或修改从原型链继承的属性,从而防止原型链污染。

  3. 提高代码可读性和可维护性:使用 hasOwnProperty() 可以使代码更加清晰和易于理解,明确了属性的来源和归属,有助于代码的维护和调试。

在这里插入图片描述

应用场景:

  1. 对象属性的访问和修改:在处理对象的属性时,可以使用 hasOwnProperty() 来确保对属性的操作仅针对对象自身的属性,而不是原型链上的属性。

  2. 自定义对象的扩展:当创建自定义对象并添加自己的属性时,可以使用 hasOwnProperty() 来检查属性是否属于当前对象,以便进行特定的逻辑处理。

  3. 避免共享属性的冲突:在多个对象之间共享一些属性时,使用 hasOwnProperty() 可以确保每个对象对共享属性的操作不会相互影响。

在这里插入图片描述

总之,hasOwnProperty() 在 JavaScript 中是一个非常实用的方法,它提供了一种明确的方式来检查对象自身的属性,有助于编写更加可靠和可维护的代码。

二、 hasOwnProperty 的定义与作用

解释 hasOwnProperty 方法的定义

hasOwnProperty() 方法是用来检测属性是否为对象的自有属性,如果是,返回 true,否则返回 false

hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继承该方法。该方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回 true

说明 hasOwnProperty 的作用:检查一个对象是否自身拥有指定的属性

hasOwnProperty 是 JavaScript 中的一个方法,用于检查一个对象是否自身拥有指定的属性,而不考虑从原型链中继承的属性。

以下是使用 hasOwnProperty 方法的示例:

// 创建对象 obj
var obj = {
  name: 'John',
  age: 30
};

// 创建对象 protoObj,作为 obj 的原型
var protoObj = {
  like: 'ball'
};

// 将 protoObj 赋值给 obj 的原型对象
obj.__proto__ = protoObj;

// 检查 obj 是否拥有自己的属性 name
console.log(obj.hasOwnProperty('name')); 

// 检查 obj 是否拥有从原型链继承的属性 like
console.log(obj.hasOwnProperty('like')); 

在上述示例中,hasOwnProperty 方法可以准确地判断一个属性是否是对象本身拥有的,而不是从原型链上继承的。这对于处理对象的属性时非常有用,例如在判断对象的属性是否可枚举、防止原型链污染等方面。

三、 hasOwnProperty 的使用示例

展示如何使用 hasOwnProperty 方法来检查对象的属性

hasOwnProperty 方法是 JavaScript 中用于检查对象是否自身拥有指定属性的方法。它可以确定一个属性是否直接属于对象本身,而不是从原型链继承的属性。

以下是一个示例,展示如何使用 hasOwnProperty 方法来检查对象的属性:

// 创建一个对象
var obj = {
  name: 'John',
  age: 30
};

// 检查对象是否拥有自己的属性 name
if (obj.hasOwnProperty('name')) {
  console.log('对象拥有自己的属性 name');
} else {
  console.log('对象没有自己的属性 name');
}

// 检查对象是否拥有从原型链继承的属性 toString
if (obj.hasOwnProperty('toString')) {
  console.log('对象拥有自己的属性 toString');
} else {
  console.log('对象没有自己的属性 toString');
}

在上述示例中,我们创建了一个对象 obj,它具有两个属性:nameage。然后,我们使用 hasOwnProperty 方法来检查对象是否拥有自己的属性 name。由于 name 是对象自身的属性,所以返回 true,并输出 对象拥有自己的属性 name

接下来,我们检查对象是否拥有从原型链继承的属性 toString。由于 toString 是从原型链继承的属性,所以返回 false,并输出 对象没有自己的属性 toString

通过使用 hasOwnProperty 方法,我们可以准确地判断一个属性是对象自身的还是从原型链继承的,这对于处理对象的属性和进行相关的操作非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1:准备 1.1:理论 对于一个系统来说,最重要的就是高可用,那么如何实现高可用呢?你可能会说,集群部署不就可以了,但事实并…

window11后台服务优化记录

这里:\WINDOWS\xxx\svchost.exe -k netsvcs -p 信号聚合器服务,用于根据时间、网络、地理位置、蓝牙和 CDF 因素评估信号。支持的功能包括设备解锁、动态锁定和动态 MDM 策略 参考: 优化参考v1

数字化发展助力青少年阅读回归“慢节奏”

近日,《2024年学前及中小学生寒假分年级阅读推荐书目》发布,正尝试引领青少年阅读在短视频时代回归“慢节奏”。该推荐书目针对每个学龄孩子的学习特点、认知特点、心理特点进行推荐,旨在培养孩子的深度思考能力。 在数字化时代,…

Docker的介绍及安装基本操作命令

前言 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱…

K8S 存储卷

意义:存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制器创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件…

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CNN-BiLSTM-KDE多…

显示器新赛道Type-C接口

如果把主机比作大脑,那显示器就是眼睛,没有眼睛,大脑再强大也发挥不出效果,所以显示器作为电脑最重要的输出设备,有着举足轻重的地位,可以说在生活中处处都有显示器的影子。其实显示器的历史也是科技发展史…

谈谈Spring Bean

一、IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期。也就是管理对象和依赖,以及依赖的注入等等。 Spring 提供…

GPT 商店强势来袭,人人都要有自己的 GPTs

作者:苍何,前大厂高级 Java 工程师,阿里云专家博主,CSDN 2023 年 实力新星,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。 🔥热门文章推荐&#xf…

AlexNet论文翻译与精读

1:该论文解决了什么问题? 图像分类问题 2:该论文的创新点? 1:使用了大的深的卷积神经网络进行图像分类; 2:采用了两块GPU进行分布式训练; 3:采用了Relu进行训练加速; 4:采用局部归一化提高模型泛化能…

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数 1. DB2取第一条数据2. DB2 中指定值排序2.1 使用case when2.2 使用decode函数 3. 拼接函数4. 强制转换类型——cast函数5. DB2除法的小数位问题(四舍五入问题)5.1 关于round…

03.C++内存管理笔记

1、C/C内存分布 ①内存分那么多区的原因:不同的数据,有不同的存储需求,各区域满足了不同的需求。 ②存放: 临时变量等临时用的变量:栈区; 动态申请的变量:堆区; 全局变量和静态变…

计算机图形学作业:四阶Bezier曲线、三阶 B 样条曲线

3. 请给出四阶Bezier曲线的矩阵表示形式,并作图绘制出一段四阶Bezier 曲线,要求给出控制点的坐标。(共 20 分) 四阶Bezier曲线的矩阵表示形式为: P(t)=P0P1P2P3P41-46-4104-1212-4006-1260004-4000011ttt3t4 给出控制点为: P0(578,389),P1(1018,175),P2(1442,373),P3(1…

【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计&…

构建labelstudio镜像的时候,报错node:18,如何解决

解决方案: vi Dockerfile # syntaxdocker/dockerfile:1.3 FROM --platformlinux/amd64 node:18.16-bullseye-slim AS frontend-builder18改成 18.16-bullseye-slim

CodeWave智能开发平台--03--目标:应用创建--09供应商详情页面下

摘要 本文是网易数帆CodeWave智能开发平台系列的第13篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成09供应商详情页面下主营产品展示及权限管理 CodeWave智能开发平台的13次接触 CodeWave参考资源…

UE 引擎工具笔记

2023虚幻技术分享会视频 1.2023年虚幻引擎最新功能和技巧 [UFSH2023]2023年虚幻引擎最新功能和技巧 | Chris Murphy Epic Games_哔哩哔哩_bilibili 推荐细看下.总结了UE5的功能大概 2.调试技巧 [UFSH2023]总有一个你不知道的虚幻引擎调试技巧 | 陈拓 Epic Games_哔哩哔哩_…

2024.1.11 Kafka 消息队列,shell命令,核心原理

目录 一 . 消息队列 二. Kafka 三 . 启动命令 四 . Kafka的Shell 命令 五 . Kafka的核心原理 1. Topic的分区和副本机制 2 . 消息存储机制 和 查询机制 3. Kafka中生产者数据分发策略 六 . Kafka 之所以具有高速的读写性能,主要有以下几个原因 七. 笔记…

8年经验之谈 —— 服务端性能瓶颈定位思路总结!

01、软件性能测试目标 软件性能测试的目的主要有以下三点: 评价系统当前性能,判断系统是否满足预期的性能需求。 寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题。 判定软件系统的性能表现,预见系统负载压力&#xff…

Asynchronous FIFO and synchronous FIFO-翻译自外网

Synchronous FIFO 先进先出 (FIFO) 是一种非常流行且有用的设计块,用于模块之间的同步和握手机制。 FIFO 的深度: FIFO 中的槽数或行数称为 FIFO 的深度。 FIFO 的宽度:每个槽或行中可以存储的位数称为 FIFO 的宽度。 在同步 FIFO 中&…