js添加封装来修改属性值

时间:2015-03-20 10:00:07

标签: javascript encapsulation

我有这堂课:

function level(intLevel) {
    this.identifier = 'level';
    this.intLevel = intLevel;
    this.strLocation = 'Unknown';
    displayLocation : function(locationName){
        this.strLocation = locationName;
    };
    this.monsterDelay = 300;
    this.setGrid(50, 24);
    return this;
}

我正在尝试添加e方法来更新strLocation。

我打电话:

displayLocation('位置&#39);

这是对的吗?

1 个答案:

答案 0 :(得分:2)

displayLocation方法是一个函数,只是一个属性。属性可以是任何东西:原始类型,对象或函数。因此,您应该像对其他属性一样配置它:

this.displayLocation = function(locationName){
    this.strLocation = locationName;
};

另一个改进是,您可能希望将可重用方法移动到函数原型,因此不会在每个实例实例化上重新创建它:

function level(intLevel) {
    this.identifier = 'level';
    this.intLevel = intLevel;
    this.strLocation = 'Unknown';
    this.monsterDelay = 300;
    this.setGrid(50, 24);
}

level.prototype.displayLocation = function(locationName) {
    this.strLocation = locationName;
};

几个笔记。您无需返回this,因为return this会自动隐含。还建议使用大写字母命名构造函数,在您的情况下Level看起来会更好。