溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣在控制臺將JS class實例輸出為JSON格式

發(fā)布時間:2021-10-09 09:37:02 來源:億速云 閱讀:149 作者:柒染 欄目:web開發(fā)

怎樣在控制臺將JS class實例輸出為JSON格式,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

有一個類:

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
}

如果我們在控制臺中輸出其實例:

console.log(new Point(10, 20));

控制臺中的輸出結(jié)果為:

Point { x: 10, y: 20 }

那如何只輸出JSON格式,不輸出類名”Point”呢?
有的同學(xué)可能會使用如下的方法:

console.log(JSON.stringify(new Point(10, 20)))

這種方法當(dāng)然是可以的,其輸出結(jié)果如下:

{"x":10,"y":20}

但我們每次輸出的時候,都需要調(diào)用一次JSON.stringify,顯得有些啰嗦。
有沒有一種更簡潔的辦法呢?
答案是肯定的。
實際上,如果你使用的是nodejs,console.log輸出類對象時,是調(diào)用的inspect函數(shù)來序列化并打印輸出對象的。
而在node中有一種自定義對象inspection函數(shù)的辦法。
在6.6.0以上版本中,你可以重寫類的[util.inspect.custom](depth, options)函數(shù)。

const util = require('util');

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    const that = this;
    return JSON.stringify(that);
  }

  [util.inspect.custom](depth, options) {
    return this.toString()
  }
}

8.x版本的文檔說明:https://nodejs.org/docs/latest-v8.x/api/util.html
在node v10.12.0以上版本中,使用了Symbol,并可以重寫[inspect]()函數(shù)。

const inspect = Symbol.for('nodejs.util.inspect.custom');

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    const that = this;
    return JSON.stringify(that);
  }

  [inspect]() {
    return this.toString()
  }
}

console.log(new Point(10, 20));

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI