如何理解JavaScript构造函数中的this功能
1、构造函数执行

2、首先进行 变量提升(全局)
只有函数Student

3、创建新对象 new Student('VIC', 20)
Step1: 首先像普通函数一样, 在栈内存里形成私有作用域, 然后进行形参赋值, 变量提升

4、Step2: 在JS代码自上而下执行之前, 首先在当前形成的私有栈中创建一个对象
创建一个堆内存, 暂时不存储任何的东西
并且让函数中的执行主体(this), 指向新的堆内存, this ===创建的对象
找一个步骤是构造函数执行特有的, 普通函数执行的时候没有;
this的创建是浏览器默认执行的, 我们看不到

5、Step3: 代码自上而下执行


6、Step4: 代码执行完成后, 把之前创建的堆内存地址返回
浏览器默认进行的操作, 不需要手工来做
构造函数执行独有的

7、开始创建的对象 其实就是当前Student这个类的一个实例
我们让this指向这个实例, 代码执行中的this.name = 'VIC'等操作都是给这个实例设置'私有属性'
最后浏览器会把默认创建的实例返回, 供外面接收
8、再次执行new Student时, 会创建新的内存空间, 形成新的实例
实例是独立分开的
9、实例对象中, 并没有 属性n
只有this.属性 = '值' 才和实例对象有关系
变量n 是私有作用域中的一个私有变量而已, 和实例对象没有关系


声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:61
阅读量:145
阅读量:93
阅读量:48
阅读量:116