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

标签 javascript

各位程序员大家好,我开始学习 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/

相关文章:

javascript - 排序嵌套数组

javascript - 似乎无法让这个 GET 方法在 AngularJS 中正常工作

javascript - 从 Nodejs 中的函数返回数组并将其发送到 ejs View ?

javascript - D3 条形图。如何根据JSON数据设置自定义x轴和y轴?

javascript - LassoJS 和 Marko-WIdgets

javascript - 单击其中的 anchor 链接时,如何使导航栏停止消失?它为什么要这么做?

javascript - 指示本地模拟的 Firebase 函数使用身份验证模拟器

javascript - 动态分配属性给 JavaScript 对象 (trie)

javascript - 如何创建一个在 React 中的 onClick 方法上接受参数的按钮组件?

JavaScript 没有检测到数组中的 indexOf -1