JavaScript对象方法

news2024/10/6 22:25:41

在 JavaScript 中,对象可以包含方法,即函数作为它的属性。这些被称为对象函数或方法。
例如:

const ITshareArray = {
  firstname: "张三",
  secondname: "二愣子",
  birthYear: "1996",
  job: "程序员",
  friends: ["李四", "王五", "牛二"],

  calaAge: function (birthYear) {
    return 2037 - birthYear;
  },
};

console.log(ITshareArray.calaAge(1998));  //使用点号运算符去调用对象中的函数
console.log(ITshareArray["calaAge"](1998));  //使用括号运算符去调用对象中的函数

在这里插入图片描述

● 但是上述代码中,有一个设计问题,我们在打印时候,可以随意输入对象的出生年,会导致于对象中的年份不匹配,按照正确的设计理念来说,我们去计算对象中的年龄是,对象的年份应该是从对象获取,以来达到对象年龄的正确性,而想在对象方法中对象的key,我们可以使用this关键字
这里简单的介绍一个this这个关键字,后面我们会对this这个关键字做详细解释;

this

例:

const ITshareArray = {
  firstname: "张三",
  secondname: "二愣子",
  birthYear: "1996",
  job: "程序员",
  friends: ["李四", "王五", "牛二"],

  calaAge: function (birthYear) {
    return 2037 - this.birthYear;
  },
};

console.log(ITshareArray.calaAge());
// console.log(ITshareArray["calaAge"](1998));

当在 JavaScript 中使用 this 关键字时,它引用的是当前代码执行的上下文对象。这个上下文对象可以是一个函数内部的对象或一个对象本身。
注:如果没有正确地设置 this,可能会导致代码出错或返回预期外的结果。在函数作为方法调用时,this 的值是调用该方法的对象。在函数作为普通函数调用时,this 的值通常是全局对象(浏览器中的 window)。但是,在严格模式下,函数作为普通函数调用时,this 的值为 undefined。

● 但是,这里有一个问题,为什么我们不可以写成如下?

 calaAge: function (birthYear) {
    return 2037 - ITshareArray.birthYear;
  },

这样也会完美的运行,但是在编程,我们始终会有一个原则,就是不要去使用重复的自己。什么意思么?就是如果对象的名称有改变,那么上述的代码就会出问题,但是如果你使用this关键字的话,就不会出问题,因为this是始终指向对象方法中的整个对象,对象名称进行改变,并不会影响this的指向出现问题;

● 除此之外,我们还可以通过this关键字,将我们计算出来的年龄存储到对象中,以方便我们后面如果需要大量重复的去计算年龄的时候,我们只需要去对象中检索关键字即可,如下所示

const ITshareArray = {
  firstname: "张三",
  secondname: "二愣子",
  birthYear: "1996",
  job: "程序员",
  friends: ["李四", "王五", "牛二"],
  calaAge: function () {
    this.age = 2037 - this.birthYear;
    return this.age;
  },
};
console.log(ITshareArray.calaAge());
console.log(ITshareArray.age);

在这里插入图片描述

注:这里一定要先console.log(ITshareArray.calaAge());才能正确的打印出age,如果直接console.log(ITshareArray.age);的话,会返回undefined,原因是age 属性只有在调用 calaAge 方法后才会被赋值。因此,在调用 calaAge 方法之前,this.age 是不存在的,并且尝试访问它将会返回 undefined。

挑战

输出“ITshareArray是一个46岁的程序员,并且她拥有了驾照”

const ITshareArray = {
  firstname: "张三",
  secondname: "二愣子",
  birthYear: "1996",
  job: "程序员",
  friends: ["李四", "王五", "牛二"],
  hasDrivesLicense: true,

  caclAge: function () {
    this.age = 2020 - this.birthYear;
    return this.age;
  },

  getSummary: function () {
    return `${this.firstname}是一个${this.caclAge()}岁的${this.job},他${
      this.hasDrivesLicense ? "有" : "没有"
    }驾照`;
  },
};

console.log(ITshareArray.caclAge());
console.log(ITshareArray.getSummary());

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多元共进|科技促进艺术发展,助力文化传承

科技发展助力文化和艺术的传播 融合传统与创新,碰撞独特魅力 一起来了解 2023 Google 开发者大会上 谷歌如何依托科技创新 推动艺术与文化连接 传承和弘扬传统文化 自 2011 年成立以来,谷歌艺术与文化致力于提供体验艺术和文化的新方式,从生成…

SpringAOP面向切面编程

文章目录 一. AOP是什么?二. AOP相关概念三. SpringAOP的简单演示四. SpringAOP实现原理 一. AOP是什么? AOP(Aspect Oriented Programming):面向切面编程,它是一种编程思想,是对某一类事情的集…

热迁移技术-QEMU

社区有言Talk is cheep, show me the code,我们尽量低纬度描述技术。 代码和版本: Qemu-5.0 #热迁移技术的实现者 Kernel-4.19 #提供kvm实现 热迁移的演进 Qemu有加载保存vm的功能,这是两个互补的操作。保存状态就是为每个vm中运行的设备保存…

不同的二叉搜索树【动态规划】

不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 class Solution {//testpublic int numTrees(int n) {//初始化 dp 数组int[] dp new int[n 1];//初始化…

像素空间文生图之Imagen原理详解

论文:Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding项目地址:https://imagen.research.google/代码(非官方):https://github.com/deep-floyd/IF模型权重:https://huggingface.co/DeepFloyd/IF-I-XL-v1.0🤗关注公众号 funNLPer 白嫖…

初识网络的发展史、通信基础和原理

目录 一.网络的发展史 二.网络通信基础 2.1IP地址 2.2端口号 2.3认识协议 2.3.1协议是什么? 2.3.2为什么需要协议? 2.3.3OSI模型和TCP/IP体系结构 三.网络通信的原理 总结 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,J…

如何在海外通过A/B测试来优化应用

在App Store和Google Play上,视觉资产是应用商店优化(ASO)的重要组成部分。我们的游戏图标、屏幕截图和预览视频具有很高的转化潜力。 1、将应用页面元素的一个或多个变体与默认元素进行竞争。 借助A/B测试,我们可以轻松、客观地发现访问者的偏好。这样…

PPT架构师架构技能图

PPT架构师架构技能图 目录概述需求: 设计思路实现思路分析1.软素质2.核心输出(office输出) 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,ma…

MFC中的类继承图的基本框架

一、类继承关系 从图中可知,在MFC中大多数的类都派生于CObject类,它的主要作用是为子类提供一些基本的功能,这些派生类构成了MFC应用程序的基本框架,它们各自的功能描述如表1所示。 派生类 功能描述 CCmdTarget 用于处理用户请…

React-Hooks 和 React-Redux

Hooks基本介绍------------------------- Hooks:钩子、钓钩、钩住, Hook 就是一个特殊的函数,让你在函数组件中获取状态等 React 特性 ,是 React v16.8 中的新增功能 作用:为函数组件提供状态、生命周期等原本 class …

51、基于注解方式开发Spring WebFlux,实现生成背压数据,就是实现一直向客户端发送消息

★ Spring WebFlux的两种开发方式 1. 采用类似于Spring MVC的注解的方式来开发。此时开发时感觉Spring MVC差异不大,但底层依然是反应式API。2. 使用函数式编程来开发★ 基于注解开发Spring WebFlux 开发上变化并不大,主要是处理方法的返回值可使用Mon…

Devos勒索病毒:网络安全的新威胁,勒索病毒解密,数据恢复

随着信息技术的飞速发展,网络安全问题日益凸显。近年来,一种名为Devos的勒索病毒在全球范围内肆虐,给企业和个人带来了极大的损失。本文将详细介绍Devos勒索病毒的特点、传播途径以及预防和应对措施,帮助大家更好地认识和防范这一…

针对JavaScript混淆加密,JShaman推出新功能

JShaman英文版在最新的一次更新时,增加了新功能: JavaScript代码混淆加密完成后,可以显示各功能耗时、处理的AST节点数量, 以此可知对代码做了哪些保护处理。 如上图所示,在此例中,对代码共进行了23项混淆…

Python标准数据类型-List(列表)

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座…

无涯教程-JavaScript - IMPRODUCT函数

描述 IMPRODUCT函数以x yi或x yj文本格式返回1到255个复数的乘积。两个复数的乘积为- $$(A BI)(C DI)(AC-BD)(A B)1 $$ 语法 IMPRODUCT (inumber1, [inumber2] ...)争论 Argument描述Required/OptionalInumber11 to 255 complex numbers to multiply.Required[inumbe…

xCode14.3.1运行MonkeyDev出现“Executable Not Found“的解决办法

安装MonkeyDev遇到的坑 环境:Xcode Version 14.3.1 (14E300c) 错误提示 is not a valid path to an executable file. 报错 /Users/xxxx//Library/Developer/Xcode/DerivedData/MonTest-ccparhdyzjuqhjdergwrngpfwwoh/Build/Products/Debug-iphoneos/MonTest.app…

基于大规模测量和多任务深度学习的电子鼻系统目标识别、浓度预测和状态判断

Target discrimination, concentration prediction, and status judgment of electronic nose system based on large-scale measurement and multi-task deep learning 摘要 为了实现响应特征的自动提取,简化模型的训练和应用过程,设计了一种双块知识…

python3网络爬虫--爬取B站视频弹幕(附源码)

文章目录 一.前言二.配置Protobuf 环境&生成编译文件1.配置Protobuf 环境2.生成编译文件 三.解析弹幕四.自动解析弹幕五.总结六.参考 本篇博文记录一下爬取B站弹幕的主要思路以及…

Pandas模块:Python科学计算神器之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…

SpotBugs检查java代码:不应该依赖平台默认编码(DM_DEFAULT_ENCODING)

https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html#internationalization-i18n 一个字节转换为字符串(或字符串转化为字节)的函数调用没有明确指明编码,而是依赖平台默认的编码,这可能导致应用在不同平台上的行为…