代码之家  ›  专栏  ›  技术社区  ›  Shai UI

在实例化函数时,局部变量是如何保存在内存中的[[副本]

  •  0
  • Shai UI  · 技术社区  · 6 年前

    function MyFunc()
    {
         var msg = 'hello';
         this.speak = function() {
             console.log(msg);
         }
    }
    
    var obj = new MyFunc();
    obj.speak();

    上述代码的奇怪之处在于它可以工作。然而“msg”不是对象的一部分。那么“味精”是如何在记忆中保存的呢。如果我这么做了,我会更明白:

    this.msg = 'hello';
    console.log(this.msg);
    

    因为它是实例化对象的一部分。但是像“var msg”这样的常规变量是如何与这个对象一起保存的呢?

    编辑:这个问题与闭包不同,因为这是一个特定的用例。

    0 回复  |  直到 6 年前