JavaScript 变量所在的位置

Where JavaScript variable is located?

本文关键字:位置 变量 JavaScript      更新时间:2023-09-26

我是 JavaScript 的新手,这对我来说似乎很奇怪......

function Employee() {}
var emp = new Employee();
emp.name = "John Doe";
alert(emp.name);

我什至不知道要搜索什么关键字"名称"变量将位于何处?全局命名空间、公共属性或其他什么?

这里有几件事很容易绊倒Javascript新手。让我们逐行分解脚本。

function Employee() {}

这是定义一个新的构造函数,该函数将创建Employee对象。目前,该功能的作用很少。

var emp = new Employee();

在这里,我们使用 new 关键字实例化一个 Employee 对象并将其分配给变量 emp .它将包含在声明的任何范围内 - 在本例中为全局范围。

emp.name = "John Doe";

我们将本地对象emp的属性name设置为"John Doe"。如果您来自一种要求您更明确地了解对象的语言,这可能看起来很奇怪。Javascript 并不关心构造函数对象中从未提及过"name"属性。因此,在emp上分配"name"属性是完全酷的。这样做的一个缺点是,如果您创建其他Employee实例,它们不一定具有name属性。

alert(emp.name);

使用浏览器的警报功能向我们显示名称"John Doe"。

因此,明确回答,nameemp(员工实例(的"公共"属性,从某种意义上说,其他人可以直接读取/写入它。Javascript没有明确声明公共或私有事物的方法。要获得这种行为,您必须依靠设计模式。如果你想模仿公共/私有属性,你可以考虑"揭示"模式,Addy Osmani在他真正伟大的书《学习Javascript设计模式》中提出了这种模式。