”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 属性访问器

属性访问器

发布于2024-11-04
浏览:292

Property accessors

了解 JavaScript 中的属性访问器

在 JavaScript 中,属性访问器是允许您访问对象属性的机制。有两种主要方法可以做到这一点:点表示法和方括号表示法。

点符号

点表示法是访问属性的最常见方法。您只需使用点 (.) 后跟属性名称即可。

括号表示法

当属性名称是动态的或不是有效的标识符(例如,它包含空格或特殊字符)时,括号表示法很有用。您使用方括号 ([]) 并将属性名称作为字符串传递

在 JavaScript 中创建对象

该语言提供了称为对象文字表示法的语法,用于快速创建对象。对象字面量用花括号表示。以下示例创建一个没有属性的空对象。

var animal = {};

在花括号内,属性及其值被指定为键/值对列表。
键可以是字符串或标识符,而值可以是任何有效的表达式。键/值对列表以逗号分隔,每个键和值用冒号分隔。

以下示例使用文字表示法创建一个具有三个属性对象。

第一个属性,动物,占据第一位。
第二个属性 dolphin 使用字符串指定,并且还存储字符串值。第三个属性,哺乳动物,存储一个空对象。

var animal = {
  dolphin: 1,
  "swim": "some string",
  mammal: {
  }
};

每个属性都写在单独的行上并缩进。整个对象可以写在一行上,但这种格式的代码更具可读性。对于具有许多属性的对象或嵌套对象尤其如此。

JavaScript 提供了两种用于访问对象属性的表示法。

第一个也是最常见的,被称为点符号
在点表示法下,通过给出主机对象的名称、后跟句点(或点)、再后跟属性名称来访问属性。

点符号

点表示法是访问属性的最常见方法。您只需使用点 (.) 后跟属性名称即可。例如:

以下示例显示如何使用点表示法读取和写入属性。如果对象.dolphin
最初的值为1,执行该语句后其值将变为2。

  • 请注意,如果animal.dolphon 还没有值,那么它将是未定义的。
animal.dolphin = animal.dolphin   1;

访问对象属性的语法称为括号表示法。在括号表示法中,对象名称后跟一组方括号
方括号 内,属性名称指定为 字符串
前面的点表示法示例已在下面重写为使用括号表示法。虽然代码可能看起来不同,但它在功能上与前面的示例相同。

object["dolphin"] = object["dolphin"]   1;

括号表示法点表示法更具表现力,因为它允许变量指定全部或部分属性名称
这是可能的,因为 JavaScript 解释器会自动将方括号内的表达式转换为字符串,然后检索相应的属性

以下示例演示如何使用括号表示法动态创建属性名称。在示例中,属性名称 foo 是通过将变量 d 的内容与字符串“dolphin”连接起来创建的。

var d = "d";

object[d   "dolphin"] = "bar";

括号表示法还允许属性名称包含点表示法禁止的字符。
例如,以下语句在括号表示法中是完全合法的。但是,如果您尝试以点表示法创建相同的属性名称,则会遇到语法错误。

object["!@#$%^&*()."] = true;

访问嵌套属性

嵌套对象的属性可以通过将点和/或括号引用链接在一起来访问。
例如,以下对象包含一个名为 dolphin 的嵌套对象,该对象包含另一个名为哺乳动物的对象,该对象具有一个名为years 的属性,该属性的值为 one。

var animal = {
  dolphin: {
    mammal: {
      years: 1
    }
  }
};

以下表达式访问嵌套属性years。第一个表达式使用 点表示法 ,而第二个表达式使用 方括号表示法
第三个表达式结合了 两种表示法以获得相同的结果.

animal.dolphin.mammal.lungs;
animal["dolphin"]["mammal"]["years"];
animal["dolphin"].mammal["years"];

如果使用不当,像上一个示例中所示的表达式可能会导致性能下降。
计算每个 点或括号表达式 需要时间。

如果多次使用同一属性,则更有意义的是访问该属性一次,然后将该值存储在局部变量中以供将来使用。以下示例在循环内多次使用 bar。然而,bar 不是浪费时间反复计算相同的值,而是存储在局部变量中。

var years = animal.dolphin.mammal.years;
var count = 0;

for (var i = 0; i 



函数作为方法

当函数用作对象属性时,它被称为方法。与属性一样,方法也可以用对象文字表示法指定。以下示例显示了这是如何完成的。

var animal = {
  sum: function(dolphin, years) {
    return dolphin   years;
  }
};

方法也可以使用点和括号表示法调用。
以下示例 使用两种表示法调用 上一个示例中的 sum() 方法。

dolphin.sum(1, 2);
dolphin["sum"](1, 2);

添加属性和方法

对象字面量表示法对于创建新对象很有用,但是它不能向现有对象添加属性或方法。
幸运的是,向对象添加新数据就像创建赋值语句一样简单

以下示例创建一个空对象
然后使用赋值语句添加两个属性(海豚和哺乳动物)和方法年。
请注意,此示例使用 点表示法 ,但 括号表示法 也同样有效。

var animal = {};
animal.dolphin = 1;
animal.mammal = null;
animal.years = function() {
  return "I am 5 years()";
};

概括
对象是由基元和其他对象构建的复合数据类型。对象的构建块通常称为其字段或属性。属性用于描述对象的某些方面。例如,属性可以描述列表的长度、狗的颜色或人的出生日期。
因此,JavaScript 对象语法对于理解至关重要,因为它是该语言的基础。
首先,您需要先了解对象,然后才能了解面向对象的编程。

  • 点表示法:当属性名称是有效标识符时使用。
  • 括号表示法:当属性名称是动态的或无效标识符时使用。 这些访问器是 JavaScript 中有效操作对象及其属性的基础。

快乐编码!

版本声明 本文转载于:https://dev.to/irenejpopova/property-accessors-2dgk?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-06-01
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-06-01
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-06-01
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-06-01
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-06-01
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-06-01
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否有必要在heap-procal extrable exit exit上进行手动调用“ delete”操作员,但开发人员通常会想知道是否需要手动调用“ delete”操作员。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(H...
    编程 发布于2025-06-01
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-06-01
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-06-01
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-06-01
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确预期操作结果的火灾和...
    编程 发布于2025-06-01
  • 如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    如何将PANDAS DataFrame列转换为DateTime格式并按日期过滤?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用时间数据时...
    编程 发布于2025-06-01
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-06-01
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass...
    编程 发布于2025-06-01

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3