我有了一個公共的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
你或者你不想從外面設置它? –
我希望可以通過我定義的公共getter/setter函數來訪問它。我不希望課堂以外的任何人直接公開訪問變量。 – Wex
「我如何使用類的原型對象來複制它?」我真的不明白這個問題。你爲什麼要用一種可能不應該實現它的語言功能複製某種行爲? – millimoose