我使用以下方法来定义对象实例而不定义类:
var obj = new function () {
this.x = 25; // Public variable
var y = 10; // Private variable
this.print = function () { // Public function
alert( this.x + y );
}
}
obj.print();
与其他模块模式相比,这有什么缺点吗? (对于 JSLint 来说 odd construct at line 1
)
最佳答案
如果您只需要聚合范围,请使用自执行匿名函数:
var obj = (function () {
var y = 10; // Private variable
return {
x: 25, // Public variable
print: function () { // Public function
alert( this.x + y );
}
}
})();
obj.print();
自执行匿名函数和创建匿名类实例之间的区别仅在于意识形态。 SEAF 是一次性的,而 class 是多次使用的。顺便说一句,实际上两次都发生了同样的事情。当您对函数调用 new
时,它会返回一个具有 this
属性的新对象,这与我们在 SEAF 中看到的相同。
关于javascript - 没有定义类的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043005/