-1

在控制台中,当我定义一个构造函数,然后在事后向它添加一个属性时,运行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]
4

1 回答 1

0

请找到对 console.dir 的引用以了解发生这种情况的原因: https ://developer.mozilla.org/en-US/docs/Web/API/Console/dir

console.log 记录你扔在那里的任何东西(在你的情况下它会记录函数)并且 dir 记录对象的属性;来自文档:

换句话说,console.dir 是在控制台中查看指定 javascipt 对象的所有属性的方式,开发人员可以通过它轻松获取对象的属性。

于 2018-06-01T13:58:16.493 回答