0

这是先前关于单步执行 json 数组的问题的结果。大卫,回答者给出了一个很好的答案,但我不明白下面的“if”语句中的“对象”这个词是什么或做什么。它似乎是一个字符串,但它似乎像某种关键字一样. 任何人都可以帮忙吗?非常感谢提前。

function json2txt(obj) {
var txt = '';
    for (var key in obj) {
       if (obj.hasOwnProperty(key)) {
          if ("object" == typeof(obj[key])) {
             json2txt(obj[key]);
          } else txt += obj + '\t' + obj[key] + '\r';
       }
    }
}
4

1 回答 1

3

JavaScript 中的typeof运算符为您提供一个字符串,告诉您操作数是否是对象引用、数字、原始字符串等。因此,该行正在检查obj[key]是否为对象引用。

这是typeof给你的(来自上面的链接),操作数的类型在左边:

  • Undefined"undefined"
  • Null"object"
  • Boolean"boolean"
  • Number"number"
  • String"string"
  • Object: (原生且未实现 [[Call]]):"object"
  • Object: (本机或主机并实现 [[Call]]):"function"
  • Object: (host and does not implement [[Call]]): implementation-defined except 可能不是"undefined", "boolean", "number", or "string".

可能值得一提的是,虽然typeof它经常被写成一个函数,但它不是一个函数,括号是不必要的。那条线也可以是:

if ("object" == typeof obj[key]) {

您可能还会发现我关于确定事物类型的博客文章很有用:说什么?

于 2013-01-01T12:27:28.080 回答