私有属性与方法

2019-05-23  本文已影响0人  SingleDiego

我们定义一个圆形(circle)的构造函数:

function Circle(radius) {
  this.radius = radius;

  this.dafaultLocation = {x: 0, y: 0};

  this.computeOptimumLocation = function(factor) {
    // 忽略具体实现
  };

  this.draw = function() {
    this.computeOptimumLocation(10);
    console.log('draw');
  };
};

const circle = new Circle(1);
circle.draw();

看起来没什么特别,但这有一个问题,dafaultLocation 属性和 computeOptimumLocation 方法都能直接被访问和修改,比如这样:

circle.dafaultLocation = true;

这显然是会造成对象的混乱,circle 对象我们需要暴露出来的接口只有 radiuscircle。对于需要私有的属性我们不把它绑定到 this 上。

function Circle(radius) {
  this.radius = radius;

  let dafaultLocation = {x: 0, y: 0};

  let computeOptimumLocation = function(factor) {
    // 忽略具体实现
  };

  this.draw = function() {
    computeOptimumLocation(10);
    console.log('draw');
  };
};
上一篇 下一篇

猜你喜欢

热点阅读