使用var声明javascript对象与使用函数声明javascript对象有什么区别?
我是个糊涂的新手。我在一篇教程中读到,您创建了一个javascript对象,如下所示:使用var声明javascript对象与使用函数声明javascript对象有什么区别?,javascript,function,oop,object,var,Javascript,Function,Oop,Object,Var,我是个糊涂的新手。我在一篇教程中读到,您创建了一个javascript对象,如下所示: function myObject() { this.myProperty = "a string"; this.myMethod = function () { //Method code } } var myObject = { myProperty: "a string", myMethod : function () { //M
function myObject() {
this.myProperty = "a string";
this.myMethod = function () {
//Method code
}
}
var myObject = {
myProperty: "a string",
myMethod : function () {
//Method code
}
}
然后我在其他地方读到,你创建了一个这样的对象:
function myObject() {
this.myProperty = "a string";
this.myMethod = function () {
//Method code
}
}
var myObject = {
myProperty: "a string",
myMethod : function () {
//Method code
}
}
这两者(非主观)的区别是什么?有官方的正确方法和错误方法吗?这两种声明都是正确的,但它们有不同的语义 第一种类型的声明允许您创建对象的实例:
var t = new myObject();
// then use t
t.myProperty = "some value";
var otherT = new myObject();
otherT.myProperty = "some other value";
第二个类似于静态对象:
这里有一个直接的比较
function myObject() {
这将在解析JavaScript时声明函数
var myObject = function () {
这将在运行时声明函数
如果您使用“var”方法,则必须在使用函数之前声明它。。。试试这个例子
myFunction(); // Works
myVarFunction(); // Boom
var myVarFunction = function () { alert("Hi"); };
function myFunction() { alert("Hi"); };
那么,如果您必须更加小心地使用“var”方法,为什么还要使用它呢?这一切都与范围有关。。。作用域函数被认为更好
更新:这里有一些很好的解释:
两者之间的主要区别在于一个变量是局部变量,另一个是全局变量。“var”基本上定义了变量的范围 当我们将var添加到变量值赋值时,javascript确保变量仅限于它被赋值的函数,并且不会与另一个函数中的同名变量冲突
当我们不使用var时,它就被声明为一个全局函数,可能会发生冲突。所以,在变量赋值之前,最好使用“var”。如果需要,请使用匿名函数进行闭包。我宁愿将第二个函数称为没有构造函数的单例函数。感谢您将其与静态对象进行比较。这是一个很好的解释方式。谢谢你的链接!一个回答说var是有范围的,但另一个回答纠正了它,说它们都有范围。我对它进行了测试,在我看来,var和函数作用域是以相同的方式存在的。或者还有其他一些情况不存在?@randomable-是的,在这个场景中的范围似乎会引起混乱。。。我可能是另一个受害者。看看这个: