[JavaScript] console.log只在查看時纔會讀取這個打印的對象,並把此刻相關屬性和值顯示出來

 
/**
   * 寫個函數解決console.log只在查看時纔會讀取這個打印的對象,並把此刻相關屬性和值顯示出來
   * @param arg
   */
  const log = function (...arg) {
    let arg1 = arg.map(item => {
      if (typeof item === 'object') {
        let json = JSON.stringify(item)
        let obj = JSON.parse(json)
        return obj
      } else {
        return item
      }
    })
    console.log.apply(null, arg1)
  }
  let a = {a: [1, 2, 3], b: 2, c: true, d: 'before'}
  log('log改變前:', a)
  console.log('console改變前:', a)
  a.a.push(2)
  a.b = 5
  a.c = false
  a.d = 'after'
  log('log改變後:', a)
  console.log('console改變後:', a)

 

打印值:json

 

 

 

說法一:console.log() 是一個異步的方法app

說法二:當在打印一個對象的時候,因爲對象中的值是引用的內存中的值,因此就會存在當打印對象的時候,當引用到對象中的值的時候,對象中的值已經發生變化了。因此只在查看時纔會讀取這個打印的對象,並把此刻相關屬性和值顯示出來。異步

Value below was evaluated just now 說明預期的值就是當前時刻的函數

相關文章
相關標籤/搜索