首页 > 解决方案 > 在哪里可以找到原型链中函数的变量?

问题描述

function a(){
   var name ="Euler Henrique";
   var age =32;
}

console.log(a); 

如果那是 a 的一个实例,那么当您使用 console.log(a) 时,它会更容易可视化,我到处都遍历原型链并且找不到 var name 和 var age,我需要它用于学习目的。

标签: javascript

解决方案


name并且age是函数范围内的局部变量。

如果要从a函数访问变量,则需要将它们添加到函数本身:

function a() {}
// Note that 'name' is a read-only property of Function
// whose value is the name of the whole function
a._name = 'Matías'
a.age = 33

console.log(a._name, a.age)

另一方面,如果您希望这两个属性都成为使用a构造函数创建的对象的一部分,则需要将它们附加到this

function a() {
  this.name = 'Matías'
  this.age = 33
}

const instance = new a()

console.log(instance)

最后,您可能希望实现模块模式,以便能够发布或使某些变量无法从外部范围访问:

function a() {
  var name = 'Matías'
  var age = 33

  return {
    age
  }
}

const moduleA = a()

// name isn't published
console.log(moduleA)


推荐阅读