使用 var 和使用 function 声明 javascript 对象有什么区别?
我是一个迷茫的新手。我在教程中读到,您像这样创建了一个 javascript 对象:
function myObject() {
this.myProperty = "a string";
this.myMethod = function () {
//Method code
}
}
然后我在其他地方读到,您像这样创建了一个对象:
var myObject = {
myProperty: "a string",
myMethod : function () {
//Method code
}
}
两者之间的(非主观)区别是什么?官方有正确的方法和错误的方法吗?
I'm a confused newbie. I read in a tutorial that you create a javascript object like so:
function myObject() {
this.myProperty = "a string";
this.myMethod = function () {
//Method code
}
}
Then I read somewhere else that you create an object like so:
var myObject = {
myProperty: "a string",
myMethod : function () {
//Method code
}
}
What is the (non-subjective) difference between the two? Is there an official right way and a wrong way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
两种声明都是正确的,但它们具有不同的语义。
第一种类型的声明允许您创建对象的实例:
第二种类型几乎就像一个静态对象:
Both declarations are correct but they have different semantics.
The first type of declaration allows you to create instances of your objects:
The second is almost like a static object:
这是一个直接比较...
这在解析 JavaScript 时声明了函数...
这在运行时声明了函数。
如果您使用“var”方法,则必须在使用它之前声明您的函数...尝试这个示例。
那么,如果必须更加小心地使用“var”方法,为什么要使用它呢?这都与作用域有关...作用域函数被认为更好。
更新:这里有一些很好的解释:
var functionName = function() {} vs 函数 functionName() {}
Here is a direct comparison...
This declares the function when JavaScript is parsed...
This declares the function at run time.
If you use the "var" method, your function must be declared before you use it... try this example.
So why use the "var" method if you have to be more careful to use it? It is all to do with the scope... scoped functions are considered better.
UPDATE: And there are some great explanations here:
var functionName = function() {} vs function functionName() {}
两者之间的主要区别在于,一个变量是局部变量,另一个是全局变量。 “var”基本上定义了变量的范围。
当我们将 var 添加到变量值赋值时,javascript 会确保该变量仅限于分配给它的任何函数,并且不会与另一个函数中的同名变量发生冲突。
当我们不使用 var 时,它会被声明为全局函数,并且可能会发生冲突。因此,建议在变量赋值之前使用“var”。如果需要,请使用匿名函数进行关闭。
The major difference between the two is that one variable is local and the other is global. “var” basically defines the scope of the variable.
When we add var to a variable value assignment, javascript ensures that the variable is confined to whichever function it is assigned to and does not collide with the same name variable within another function.
When we don’t use var, then it is declared as a global function and chances of collision can happen. So it’s always advisable to use “var” before variable value assignment. If needed use an anonymous function for closure.