次のようなオブジェクトがあります。
var a = {
b: "string",
c: function(){
return "i return a string";
}
}
やっている
for (var key in a) {
console.log(typeof key);
};
b は文字列で、c は文字列を返すため、"string"、"string" を返します。
c -> 関数を返す関数はありますか?
次のようなオブジェクトがあります。
var a = {
b: "string",
c: function(){
return "i return a string";
}
}
やっている
for (var key in a) {
console.log(typeof key);
};
b は文字列で、c は文字列を返すため、"string"、"string" を返します。
c -> 関数を返す関数はありますか?
プロパティのキーではなく型を表示したい場合は、値をtypeof
演算子と一緒に使用する必要があります。
for (var key in a) {
console.log(typeof a[key] );
};
b は文字列で、c は文字列を返すため、"string"、"string" を返します。
いいえ。が返される理由string
は、属性名b
と属性名c
が両方とも文字列であるためです。現在、オブジェクトの値ではなく、オブジェクトのキーを反復処理しています。
d
数値またはブール値を返す関数であるattribute を導入しても、 を取得できstring
ます。
代わりに、値自体を列挙します。
for (var x in a) {
console.log(typeof a[x] );
};
基本的に、オブジェクトのキーはそのように表現されているため、オブジェクトのキーを繰り返し処理することで常に文字列を取得します。
しかし、たとえば 次のconsole.log(typeof a[key]);
ようにすると、期待される出力が得られます。
誰にでもわかりやすいように、少し説明します。(とにかく、ここに私の最初の投稿。)
次のコードを試してみてください。
console.log(typeof(a.c))
しかし、あなたが書いたのはプロパティ名を読んでいることです。次のコードを試して、コードの問題点を理解してください。
for (var key in a) {
console.log(key);
};
したがって、基本的にあなたが得ているものは正しいです。すべてのプロパティ名は文字列であるためです。JSON オブジェクトには、大文字と小文字の区別、プロパティへのトラバースに必要なフル パスなど、いくつかの制限があることに注意してください。
次のようにコードを変更して、プロパティのタイプを取得します。
解決策 1:
console.log(typeof(a[key]));
解決策 2:
console.log(typeof(eval('a.'+ key)));
への変更:
for (var key in a) {
console.log(typeof a[key]);
};
console.log(typeof key); // gives you the key - "c"
console.log(typeof a[key]); // gives you the value of the "c" key - function.