-1
   var object={
      firstString: 'You must register in order...',
      secondString:'You must re-enter your password in order to...',
      thirdString:'You must re-enter your password in order to...'
    };

ご覧のとおり、2 番目と 3 番目の文字列は同じです。これは、現在使用しているオブジェクトで複数回発生するため、バイトを節約するために、3 番目のオブジェクトを 2 番目のオブジェクトにリンクしたいと考えています。

私は次のことを試しましたが、うまくいきません

var object={
  firstString:'You must register in order...',
  secondString:'You must re-enter your password in order to...',
  thirdString:this.secondString
};

var object={
      firstString:'You must register in order...',
      secondString:'You must re-enter your password in order to...',
      thirdString:object.secondString
};

ありがとうございました

4

5 に答える 5

7

オブジェクト リテラル内に自己参照式を作成することはできません。別のステートメントで宣言の初期化をフォローアップする必要があります。

var object={
  firstString='You must register in order...',
  secondString:'You must re-enter your password in order to...',
};
object.thirdString = object.secondString;

単一の式で変数を本当に初期化したい場合は、関数を使用できます。

var object = function() {
  var o = {
    firstString='You must register in order...',
    secondString:'You must re-enter your password in order to...',
  };
  o.thirdString = o.secondString;
  return o;
}();

状況によっては、最新の JavaScript VM 内部が文字列定数の重複に気づき、冗長性を最適化することは不可能ではないことに注意してください。彼らがそうするかどうか、私はどちらかの方法で知りません。

于 2013-08-29T19:50:30.777 に答える
1

または、楽しみたい場合は、この方法で試すことができます(免責事項:私はこれをしませんが、挑戦は楽しかったです)

function selfReferencer(generator) {
    var temp = generator.apply({});
    return generator.apply(temp);
}

次に、次のようにオブジェクトを構築します。

var obj = selfReferencer(function() { return {
    firstString: 'You must register in order...',
    secondString: 'You must re-enter your password in order to...',
    thirdString: this.secondString
}});
于 2013-08-29T20:04:45.417 に答える
1

最も簡単な方法は、参照している文字列が何であるかを定義することです。例えば。string passwordAsk = '次の操作を行うには、パスワードを再入力する必要があります...'. これにより、将来、それらすべてをより簡単に変更することもできます。

于 2013-08-29T19:55:10.477 に答える
1

Pointyの答えを拡張するには:

あなたはこれを試すことができます:

var Obj = (function () {
    
    function Obj() {
        this.obj = {};
    }

    Obj.prototype.set = function(name, value) {
         this.obj[name] = value;
    };

    return Obj;
})();

var object = new Obj();
object.set('firstString', 'You must register in order...');
object.set('secondString', 'You must re-enter your password in order to...');
object.set('thirdString', object.obj.secondString);

object.objその後、オブジェクトとして使用できます。

同じ方法で使用できる複数のObjオブジェクトを作成できます。


または

複雑なクラスを使用する代わりに、次のObjことができます。

var object = {};
object.firstString = 'You must register in order...';
object.secondString = 'You must re-enter your password in order to...';
object.thirdString = object.secondString;
于 2013-08-29T19:55:41.173 に答える