2

我发现许多 javascript 开发人员创建的方法只是返回如下属性:

function Obj (prop) {
    this.prop = prop; // public
}
Obj.prototype.getProp = function () {
    return this.prop;
};

虽然 prop 是公开的,可以像这样访问:

var a = obj.prop;

此外,我发现使用方法访问对象属性比直接访问它慢 121 倍(在 Firefox 中)

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...)

所以我的问题是:我们应该始终创建返回属性的方法还是可以直接访问属性?那是反模式吗?

4

1 回答 1

0

是的,它是一种反模式。由于 js 没有原生的 getter 和 setter,它们将是跨浏览器的,但是,您应该创建自己的 getter 和 setter,例如:

Obj.prototype.getProp = function () {
    return this.prop;
};

是的,您仍然可以直接访问此道具,但现在您不必这样做。更多关于那个。这样你就可以通过闭包创建私有属性:

function Foo() {
   var __yourPrivateProp = 'Bar';
   return {
           getyourPrivateProp: function () {
               return: __yourPrivateProp
           }
   };
}
于 2012-10-15T09:47:06.000 回答