• Node.js Video Tutorials

NodeJS - console.dir() 方法



Node.js console.dir() 方法Console 类的一个内置方法。

Node.js 的 console.dir() 方法返回特定对象的属性。此方法用于在终端窗口中显示特定对象的属性的交互式列表。当调用时,它会打印对象的属性和值的层次结构表示,使用户能够快速检查它们,而无需手动遍历每个属性或值。

这在调试时特别有用。这是因为查看对象比在控制台日志中输入各个属性及其关联的值更容易。

假设一个男孩是一个对象,他有一些属性,例如姓名、年龄、学校、分数等。要返回男孩的属性,我们使用 Node.js 的 console.dir() 方法。为了更好地理解,让我们了解一下 console.dir() 方法的语法和用法。

语法

以下是 Node.js console.dir() 方法的语法:

console.dir(object[, options])

参数

此方法仅接受两个参数。下面描述了这些参数。

  • object − 此参数指定要返回的对象。

以下是可选参数,让我们了解一下它们。

  • showHidden − 这是一个 布尔值。如果为真,则将显示对象的不可枚举和符号属性。

  • depth − 这是一个数字。这将让我们打印指定对象的层级。默认情况下,深度为 2。如果我们想要获取对象的所有层级,则传递 null

  • colors − 这是一个 布尔值。如果我们传递 true,则属性值将以 ANSI 颜色代码显示。我们可以自定义颜色。默认值为 false(无 ANSI 颜色)

返回值

此方法返回指定对象的属性。

示例

Node.js 的 console.dir() 方法仅接受一个 object 参数。

在下面的示例中,我们正在创建一个具有可枚举属性的对象。要返回对象的属性,我们使用对象名称作为参数调用 Node.js console.dir() 方法。

var object = {
   Name : "Nik",
   Age : 31,
   Eyes :"black",
   height : 5.2,
   weight : 70
}
console.dir(object);

输出

正如我们在下面的输出中看到的,当我们通过将对象名称作为参数传递来调用 console.dir() 方法时,将列出对象的可枚举属性。

{ Name: 'Nik', Age: 31, Eyes: 'black', height: 5.2, weight: 70 }

示例

在下面的示例中,我们正在创建一个 4 层的对象。要返回对象的属性,我们使用对象名称作为参数调用 console.dir() 方法。

注意 − 默认情况下,console.dir() 方法只能深入到 2 层。

var object = { // level 0 start
   firstname : "James",
   lastname : "Anderson",
   Initial : function() {
      return this.firstname[0] + this.lastname[0];
   },
   attrributes: { // level 1 start
      age : 34,
      school : "High school",
      hobbies : { // level 2 start
         favourite : { // level 3 start
            sport : "football",
            book : "Nothing"
         },
         RecentlyPlayed : {
            game : "cricket",
            videogame : "GTA5"
         } // level 3 ends
      } // level 2 ends   
   } // level 1 ends
} // level 0 ends

console.dir(object);

输出

正如我们在下面的输出中看到的,我们得到了对象属性的输出,最多 2 层。因此,要获取对象的所有属性,我们需要使用 depth 参数。要了解 depth 参数的用法,请查看下一个示例。

{
   firstname: 'James',
   lastname: 'Anderson',
   Initial: [Function: Initial],
   attrributes: {
      age: 34,
      school: 'High school',
      hobbies: { favourite: [Object], RecentlyPlayed: [Object] }
   }
}

示例

Node.js 的 console.dir() 方法还接受一些其他参数,如 showHidden、depthcolors,我们在示例中使用了 depth 可选参数。

在下面的示例中,

  • 我们正在创建一个 4 层的对象。

  • 要返回对象的属性,我们使用对象名称作为参数调用 console.dir() 方法。

  • 默认情况下,它仅返回对象属性的前 2 层。

  • 我们尝试通过使用 depth 参数获取对象的所有层级的属性。

var object = { // level 0 start
   firstname : "James",
   lastname : "Anderson",
   Initial : function() {
      return this.firstname[0] + this.lastname[0];
   },
   attrributes: { // level 1 start
      age : 34,
      school : "High school",
      hobbies : { // level 2 start
         favourite : { // level 3 start
            sport : "football",
            book : "Nothing"
         },
         RecentlyPlayed : {
            game : "cricket",
            videogame : "GTA5"
         } // level 3 ends
      } // level 2 ends   
   } // level 1 ends
} // level 0 ends

console.dir(object, {depth: null, showHidden: true});

输出

正如我们在下面的输出中看到的,对象的所有层级的属性都已打印出来。我们通过将 depth 声明为 null 来实现这一点。

{
  firstname: 'James',
  lastname: 'Anderson',
  Initial: [Function: Initial] {
    [length]: 0,
    [name]: 'Initial',
    [arguments]: null,
    [caller]: null,
    [prototype]: Initial { [constructor]: [Circular] }
  },
  attrributes: {
    age: 34,
    school: 'High school',
    hobbies: {
      favourite: { sport: 'football', book: 'Nothing' },
      RecentlyPlayed: { game: 'cricket', videogame: 'GTA5' }
    }
  }
}

示例

Node.js 的 console.dir() 方法还接受一些其他参数,如 showHidden、depthcolors,我们在示例中使用了 showHidden 可选参数。

在下面的示例中,

  • 我们正在创建一个 4 层的对象。

  • 要返回对象的属性,我们使用对象名称作为参数调用 console.dir() 方法。

  • 我们将 showHidden 参数传递为 true,它将显示隐藏对象的不可枚举和符号属性。

var object = { // level 0 start
   firstname : "James",
   lastname : "Anderson",
   Initial : function() {
      return this.firstname[0] + this.lastname[0];
   },
   attrributes: { // level 1 start
      age : 34,
      school : "High school",
      hobbies : { // level 2 start
         favourite : { // level 3 start
            sport : "football",
            book : "Nothing"
         },
         RecentlyPlayed : {
            game : "cricket",
            videogame : "GTA5"
         } // level 3 ends
      } // level 2 ends   
   } // level 1 ends
} // level 0 ends

console.dir(object, {depth: null, showHidden: true});

输出

正如我们在输出中看到的,隐藏属性与对象的属性一起显示在输出中。

{
   firstname: 'James',
   lastname: 'Anderson',
   Initial: <ref *1> [Function: Initial] {
      [length]: 0,
      [name]: 'Initial',
      [arguments]: null,
      [caller]: null,
      [prototype]: { [constructor]: [Circular *1] }
   },
   attrributes: {
      age: 34,
      school: 'High school',
      hobbies: {
         favourite: { sport: 'football', book: 'Nothing' },
         RecentlyPlayed: { game: 'cricket', videogame: 'GTA5' }
      }
   }
}

示例

Node.js 的 console.dir() 方法还接受一些其他参数,如 showHidden、depthcolors,我们在示例中使用了 colors 作为可选参数。

在下面的示例中,

  • 我们正在创建一个 4 层的对象。

  • 要返回对象的属性,我们使用对象名称作为参数调用 console.dir() 方法。

  • 我们通过将 colors 参数传递为 true 来更改输出的颜色(使用 ANSI 颜色代码)。默认值为 false(无颜色)。

var object = {  // level 0 start
   firstname : "James",
   lastname : "Anderson",
   Initial : function() {
      return this.firstname[0] + this.lastname[0];
   },
   attrributes: { // level 1 start
      age : 34,
      school : "High school",
      hobbies : { // level 2 start
         favourite : { // level 3 start
            sport : "football",
            book : "Nothing"
         },
         RecentlyPlayed : {
            game : "cricket",
            videogame : "GTA5"
         } // level 3 ends
      } // level 2 ends   
   } // level 1 ends
} // level 0 ends

console.dir(object, {depth: null, showHidden: true, colors: true});

输出

正如我们在输出中看到的,我们为对象的 string 属性获得了其中一种颜色,为对象的 integer 属性获得了另一种颜色。

{
   firstname: 'James',
   lastname: 'Anderson',
   Initial: <ref *1> [Function: Initial] {
      [length]: 0,
      [name]: 'Initial',
      [arguments]: null,
      [caller]: null,
      [prototype]: { [constructor]: [Circular *1] }
   },
   attrributes: {
      age: 34,
      school: 'High school',
      hobbies: {
         favourite: { sport: 'football', book: 'Nothing' },
         RecentlyPlayed: { game: 'cricket', videogame: 'GTA5' }
      }
   }
}
nodejs_console_module.htm
广告