这两种实现都创建一个单例,但是一个使用this
关键字,而另一个则返回对象文字。一种做法比另一种更好吗?
var Class = new function() {
var privateVar = 3;
this.publicMethod = function() {
return privateVar;
}
};
Class.publicMethod() //Returns 3
vs。
var Class = (function() {
var privateVar = 3;
return {
publicMethod: function() {
return privateVar;
}
}
})();
Class.publicMethod() //Returns 3
答案 0 :(得分:-1)
我认为它们是等效的。
new <function>
创建一个新对象,将其__proto__
属性设置为<function>
的原型,以该对象作为其<function>
上下文调用this
,然后如果函数没有返回其他对象,则返回该对象。匿名函数的原型是Object
原型。
您的IIFE版本是等效的,因为它创建并返回了对象本身。从文字创建的对象的原型也是Object
原型。