我发现许多javascript开发人员创建的方法只返回如下属性:
function Obj (prop) {
this.prop = prop; // public
}
Obj.prototype.getProp = function () {
return this.prop;
};
虽然prop是公开的,可以像这样访问:
var a = obj.prop;
此外,我发现使用方法访问对象属性比直接访问它(在Firefox中)慢121倍
var a, b,
obj = new Obj(1);
a = obj.prop;
// ~6ns on Chrome
// ~5ns on Firefox
b = obj.getProp();
// ~6ns on Chrome (no difference)
// ~730ns on Firefox (122x slower...)
所以我的问题是:我们应该始终创建返回属性的方法,还是可以直接访问属性?那是反模式吗?
答案 0 :(得分:0)
是的,它是反模式。由于js没有本机的getter和setter,它们将是crossbrowser,但是,你应该创建自己的getter和setter,如:
Obj.prototype.getProp = function () {
return this.prop;
};
是的,您仍然可以直接访问此道具,但现在您不必这样做。更多内容。这样您就可以通过闭包创建私有属性:
function Foo() {
var __yourPrivateProp = 'Bar';
return {
getyourPrivateProp: function () {
return: __yourPrivateProp
}
};
}