此示例實現了矩形的私有變量。變量myLength和myWidth對於不同的實例是不同的。那麼爲什麼這不是建議的方法?Javascript:通過返回匿名對象實現私有變量
var rectangle = function() {
var myLength = 8;
var myWidth = 6;
var getMyLength = function() {
return myLength;
};
var setMyLength = function (value) {
myLength = value;
};
var getMyWidth = function() {
return myWidth;
};
var setMyWidth = function (value) {
myWidth = value;
};
var drawFigure = function() {
console.log("Draw invoked for figure: " +
getMyLength() + " * " + getMyWidth());
};
return {
getMyLength: getMyLength,
setMyLength: setMyLength,
getMyWidth: getMyWidth,
setMyWidth: setMyWidth,
drawFigure: drawFigure
}
};
然後我們使用它,如下所示:
var myRectangle = new rectangle();
myRectangle.drawFigure(); // Draw invoked for figure: 8 * 6
myRectangle.setMyLength(3);
myRectangle.setMyWidth(5);
myRectangle.drawFigure(); // Draw invoked for figure: 3 * 5
var myRectangle1 = new rectangle();
myRectangle1.drawFigure(); // Draw invoked for figure: 8 * 6
*「那麼,爲什麼這不是推薦的方法?」*誰說不推薦?當您需要保護變量時,這是一種非常常見的方法。 –
......和'new rectangle();'可以是'rectangle();'。沒有意見分配一個新的對象,如果你要忽略它並返回一個不同的對象。 –
@cookiemonster謝謝。我看到很多使用this.length和this.width而不是var的例子。爲什麼你使用this.methods呢? 我用來學習的一個示例頁面:http://phrogz.net/JS/classes/OOPinJS.html – bschandramohan