【发布时间】:2013-04-13 02:40:59
【问题描述】:
我已经看到了几种在 javascript 中实例化对象的不同方法,想知道各种方法的优缺点以及为什么要使用其中一种方法。
方法 1
var obj = {
prop: value,
.
.
.
}
方法一是标准方法,没什么新意:)
方法 2
var obj = new function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
this.prop2 = value2;
.
.
.
}();
函数方式,我想把这个方式和方式3比较一下。函数方式主要用于封装(对吗?)
方法 3
var obj = (function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
return {
prop2: value2,
.
.
.
}
})();
使用这种方法,我不太明白其使用背后的原因。它与方法 2 有何不同?两者都可以用来封装逻辑。
这样我们可以传入参数,以便我们可以处理任何潜在的冲突吗?例如 jquery 的 $ 语法 - 但您也可以使用方法 2...
谢谢。
编辑:
我知道方法 1 和 3 是相似的(因为它们都返回对象)但是方法 3 也创建了一个闭包。哪种方法 2 也可以。
这确实是我的问题的基础,2 和 3 都会创建闭包,但它们之间有什么区别。
【问题讨论】:
-
在方法 2 中不应出现
new关键字。 -
@FritsvanCampen - 是的,应该。这会从(匿名)构造函数创建一个新对象。
-
如果
new关键字不存在,它将是一个类。 -
第二种方法应该有()操作符
-
@KamyarNazeri - 不,
new运算符负责调用函数。
标签: javascript javascript-objects