原型链,闭包和new创建对象的区别
原型链
在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。
每一个javascript对象创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。
而原型链,就是依靠对象的proto指针,一层一层找到对象的最上级父类。
闭包
声明在一个函数中的函数,叫做闭包函数。
闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。闭包会发生内存泄漏,每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的地址。但凡是当前活动对象中有被内部子集引用的数据,那么这个时候,这个数据不删除,保留一根指针给内部活动对象。
new
new创建对象分为4步
第一步:创建一个空对象,关联构造函数的原型对象。
第二步:执行构造函数,改变this的上下文,给创建的空对象属性赋值
第三步:判断第二部执行返回的是不是对象
第四步:返回