0

おそらく、私は、というオブジェクトを持っていcachecache.a、明示的に.のようなものに設定する前に、文字通りすべてに事前定義された値をデフォルトとして使用するようにしたいのです。これを達成する方法はありますか?cache.bcache.ccache.whateverVALUEcache.a = 'FOOBAR'

4

2 に答える 2

1

あなたはこれを次のようにすることができます

function Cache(){
    this.GetValue = function(propertyName){
        if(!this[propertyName]){
            this[propertyName] = "Value";
        }
        return this[propertyName];
    }

    this.SetValue = function(propertyName, Value){
        this[propertyName] = Value;
    }
    return this;
}

編集

次のように使用できます...

var cache = new Cache();
alert(cache.GetValue("a")); // It will alert "Value"

var newValueOfA = "New Value";
cache.SetValue("a", newValueOfA);

alert(cache.GetValue("a")); // It will alert "New Value"
于 2012-12-12T10:54:31.173 に答える
0

Nope. Your best bet is to introduce an extra layer of indirection:

var Cache = function(){
  this.values = {};
};

Cache.prototype.set = function(key, value) {
  this.values[key] = value;
};

Cache.prototype.get = function(key) {
  var result = this.values[key];
  if (typeof result === 'undefined') {
     return 'default';
  }
  return result;
};
于 2012-12-12T10:45:44.603 に答える