0

関数の戻り値を変更できるかどうか疑問に思っていました。

var foo = function(options) {
  var options = options || {},
      bar = options.bar || "bar",
      baz = options.baz || "baz";

  return {
    bar: bar,
    baz: baz
  }
};

私はそれを次のように呼びたいです:

foo({
  bar: this.bar + "ret"
});

そして、私の期待は次のとおりです。

>>> { bar: "barret", baz: "baz" }

しかし、私は代わりにこれを取得します:

>>> { bar: "undefinedret", baz: "baz" }

どうやってそれを行うのですか?

4

3 に答える 3

1

関数本体の外側thisは使用できないため、例は失敗します。あなたは呼び出すことができます:

foo({
    bar: "barret"
});

または(関数の外でデフォルト値を使用したくない場合):

var x = foo();
x.bar += "ret";

または、もう 1 つのパラメータを追加して関数を変更します。

var foo = function(options) {
  var options = options || {},
      bar = options.bar || "bar",
      baz = options.baz || "baz",
      barSuffix = options.barSuffix || "";

  return {
    bar: bar + barSuffix,
    baz: baz
  }
};

foo({barSuffix: "ret"});
于 2013-09-28T10:19:04.273 に答える