我有一个类,它有一个带有公共 setter/getter 函数的私有变量:
function Circle(rad) {
var r = rad;
this.radius = function(rad) {
if(!arguments.length) return r;
r = rad;
return this;
}
}
var shape = new Circle(10);
console.log( shape.radius() ); // 10
shape.r = 50;
console.log( shape.radius() ); // 10
我怎样才能复制这个使用Object.prototype
?或者,我什么时候想使用闭包而不是Object.prototype
?这是我能想到的最接近的,但正如您所看到的,您可以直接更改属性。
function Circle(r) {
this.r = r;
}
Circle.prototype.radius = function(r) {
if(!arguments.length) return this.r;
this.r = r;
return this;
};
var shape = new Circle(10);
console.log( shape.radius() ); // 10
shape.r = 50;
console.log( shape.radius() ); // 50