JavaScript中静态变量的工作

问题描述 投票:0回答:1

static在javascript中的工作方式有些困惑。

function StaticExample() {}

StaticExample.staticProp = "Hello"

console.log(StaticExample.staticProp) // "Hello"

在这里,我创建了一个function,然后创建了一个静态变量staticProp(虽然我们不能称其为静态)。这会将字段staticProp添加到constructorStaticExample

prototype字段中

问题1:这种行为是否有特定原因(字段已添加到构造函数属性中?)>

现在constructor被重写如下。

StaticExample.prototype.constructor = {}

console.log(StaticExample.staticProp) // "Hello"

即使在此之后,当我尝试访问StaticExample.staticProp时,它也会提供Hello的正确值

问题2:即使最初添加了staticProp的地方被覆盖,从constructor的地方也被覆盖。

关于静态在javascript中的工作方式有些困惑。 function StaticExample(){} StaticExample.staticProp =“ Hello” console.log(StaticExample.staticProp)//“ Hello”在这里,我创建了一个函数...

javascript internals
1个回答
1
投票

StaticExample是一个对象。功能对象,但仍然是对象。您为其分配一个新属性:StaticExample.staticProp = "Hello"

© www.soinside.com 2019 - 2024. All rights reserved.