В чем разница между свойствами конструктора, которые видны в `console.log`, и свойствами, которые видны в`console.dir`?

В консоли, когда я определяю функцию конструктора, а затем добавляю к ней свойство после того, как console.log(myConstructor) не раскрывает эту собственность. Тем не менее, когда я бегу console.dir(myConstructor) Теперь я могу видеть добавленную мной собственность, а также многие другие. В чем разница между свойствами, которые я вижу с console.log а те, которые я не могу? Существуют ли конкретные термины или словарь, которые можно использовать, чтобы различать эти два типа свойств?

function myConstructor(){
  this.sayHi = function(){
    console.log("hey")
  }
}

myConstructor.boop = "thing"

console.log(myConstructor)

=> ƒ myConstructor(){
       this.sayHi = function(){
         console.log("hey")
       }
     }

console.dir(myConstructor)

=> ƒ myConstructor()
       boop : "thing"
       arguments:null
       caller:null
       length:0
       name:"myConstructor"
       prototype:{constructor: ƒ}
       __proto__:ƒ ()
       [[FunctionLocation]]:VM123:1
       [[Scopes]]:Scopes[1]

1 ответ

Пожалуйста, найдите ссылку на console.dir, чтобы понять, почему это происходит: https://developer.mozilla.org/en-US/docs/Web/API/Console/dir

console.log записывает все, что вы там выбросили (в вашем случае это будет запись функции), а dir - свойства объекта; из документов:

Другими словами, console.dir - это способ увидеть все свойства указанного объекта javascipt в консоли, с помощью которого разработчик может легко получить свойства объекта.

Другие вопросы по тегам