我们定义一个圆形(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 对象我们需要暴露出来的接口只有 radius
和 circle
。对于需要私有的属性我们不把它绑定到 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');
};
};
网友评论