使用这种模式有什么缺点吗?
var Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.move = function(meters) {
return alert(this.name + (" moved " + meters + "m."));
};
return Animal;
})();
我认为将所有内容封装在立即调用的函数表达式中对于可读性很好,我知道这就是 CoffeeScript 的类编译的内容。
它不是那么紧凑,我通常使用这样的快捷方式:
var Animal = Object.extend({
initialize: function (name) {
this.name = name;
},
move: function(meters) {
return alert(this.name + (" moved " + meters + "m."));
}
});
或
var Animal = Class({
initialize: function (name) {
this.name = name;
},
move: function(meters) {
return alert(this.name + (" moved " + meters + "m."));
}
});
否则你的方法没有问题,所以ofc,你可以使用它......
数据隐藏有一个优势,你可以通过将构造函数放入闭包中使用静态私有变量(如果我们谈论类)。我们通常在模块级别使用这种方法进行数据隐藏,对于构造函数来说,它根本不值得付出努力......