web-dev-qa-db-ja.com

変数の名前を取得します(C#のnameof演算子など)

次のコードがあると仮定しましょう。

const myVariable = { age: 7, name: "Hunter" };

変数の値だけでなく、変数の名前を知り、文字列に入れるか、ログに記録するか、次のようにします。

const s = nameof(myVariable) + ': ' + JSON.stringify(myVariable);

そして、私が見たい結果は次のようになります。

"myVariable: {"age":7,"name":"Hunter"}"

あなたの解決策を見るのを楽しみにしています。

13
dr. rAI

これは、少し妥協したQ&Aスタイルでの私自身の答えです。ここでの秘訣は、nameof({myVariable})ではなくnameof(myVariable)のように、パラメータを中括弧で囲むことにより、オブジェクト内の関数名に渡すことです。

この規則に従うと、ソリューションは次のようになります。

var HD = HD || {};
HD.nameof = function (obj) {
  return Object.keys(obj)[0];
}

そして、これは私が変数/オブジェクトの名前とオブジェクトのコンテンツ/変数の値を取得するためにそれを使用する方法です:

const s = HD.nameof({myVariable}) + ': ' + JSON.stringify(myVariable);   

したがって、sには、上記の質問で要求された結果が含まれます。

5
dr. rAI