Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript变量位于何处?_Javascript - Fatal编程技术网

JavaScript变量位于何处?

JavaScript变量位于何处?,javascript,Javascript,我是JavaScript新手,这对我来说很奇怪 function Employee() {} var emp = new Employee(); emp.name = "John Doe"; alert(emp.name); 我甚至不知道该搜索什么关键字 名称变量将位于何处? 全局名称空间、公共属性或其他什么?您在这里遇到了一些事情,这些事情很容易让不熟悉Javascript的人绊倒。让我们把脚本逐行分解 function Employee() {} 这是定义一个新的构造函数来创建Emplo

我是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的属性名设置为johndoe。如果您来自一种要求您对对象更加明确的语言,这可能看起来很奇怪。Javascript并不关心构造函数对象中从未提到name属性。因此,在emp上指定name属性是非常酷的。这样做的一个缺点是,如果您创建其他Employee实例,它们不一定具有name属性

alert(emp.name);
使用浏览器的警报功能向我们显示John Doe的名字


所以,明确地说,名称是emp的公共属性,emp是Employee的一个实例,从这个意义上说,其他人可以直接读/写它。Javascript没有明确声明公共或私有内容的方法。要获得这种行为,必须依赖于设计模式。如果你想模仿公共/私人属性,你可以考虑揭示模式,Addy Osmani在他的真正伟大的书

< P>中列出了一些事情,可以很容易地把一些新的人从JavaScript中解脱出来。让我们把脚本逐行分解

function Employee() {}
这是定义一个新的构造函数来创建Employee对象。目前,该函数的作用非常小

var emp = new Employee();
在这里,我们用new关键字实例化Employee对象,并将其分配给变量emp。它将包含在本例中声明的任何范围内,即全局范围内

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

alert(emp.name);
使用浏览器的警报功能向我们显示John Doe的名字


所以,明确地说,名称是emp的公共属性,emp是Employee的一个实例,从这个意义上说,其他人可以直接读/写它。Javascript没有明确声明公共或私有内容的方法。要获得这种行为,必须依赖于设计模式。如果你想模仿公共/私人属性,你可以考虑揭示模式,Addy Osmani在他的真正伟大的书

中提出,我认为公共实例属性最好总结它。你真正的问题是什么?这不是一个变量。它是emp对象上的一个属性。对象是键/值对的集合,其中键最终是字符串,值是任何类型的。所以在你的例子中,键是name,值是johndoe,我认为公共实例属性是最好的总结。你真正的问题是什么?这不是一个变量。它是emp对象上的一个属性。对象是键/值对的集合,其中键最终是字符串,值是任何类型的。因此,在您的例子中,键是name,值是John Doe。实际上,“name”是emp中对象引用的一个属性,并且不会成为Employee的任何其他实例的一部分,除非它也被分配给它们。@jfriend00-澄清。哇!很好的解释。谢谢你的回答!也要感谢@jfiend00!实际上,“name”是emp中对象引用的一个属性,除非它也被分配给Employee的任何其他实例,否则它不会成为Employee实例的一部分。@jfriend00-已澄清。哇!很好的解释。谢谢你的回答!也要感谢@jfiend00!