gpt4 book ai didi

javascript - 在函数内部存储属性,静态?

转载 作者:行者123 更新时间:2023-11-28 12:38:36 26 4
gpt4 key购买 nike

各位程序员大家好,我开始学习 JavaScript 了。这种语法纯粹是魔法,有人可以澄清一下:

function CleanPet(){
alert("The pet is now clean!");
}

CleanPet.Description="Dirty Business";

我正在阅读的 Material 解释说,在 JavaScript 中,函数与任何其他对象一样,但是如果我将属性附加到函数,这是否意味着它是静态的,因为我实际上尚未声明它?

感谢您的帮助,I.N.

最佳答案

对象属性并不是像变量那样使用 var 进行正式意义上的“声明”。给定一个现有对象 CleanPet,您可以分配诸如 CleanPet.Description 之类的属性(如问题中所示),如果不存在,它将创建 Description 属性尚不存在,或者如果已存在则覆盖该属性。

尝试访问尚未设置的对象属性也是“合法的”,例如,CleanPet.SomeOtherProperty - 结果值将是未定义。 (不是错误,尽管假设 CleanPet 实际上是一个对象。如果 CleanPetnullundefinedCleanPet.SomeOtherProperty 会给出错误。)

因此,具体而言,函数声明:

 function CleanPet { /* some code */ }

...声明一个恰好是函数的单个对象。这意味着您可以将其作为函数 CleanPet() 进行调用,但它仍然具有“普通”对象行为,例如分配属性的能力。

如果使用 new 调用,JavaScript 函数也是对象构造函数:

var cleanPet1 = new CleanPet();

在这种情况下,每次调用 new CleanPet() 时,JS 都会创建一个新对象(实例),但 CleanPet.Description 属性不会 可通过 cleanPet1.Description 访问,因为它是构造函数的属性,而不是生成的 new 实例的属性。所以从这个意义上说,是的,该属性是“静态的”。

关于javascript - 在函数内部存储属性,静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com