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”这样的常规变量是如何与这个对象一起保存的呢?
编辑:这个问题与闭包不同,因为这是一个特定的用例。