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