原型链那些事
原型和原型链
-
prototype
每个构造函数都有一个prototype属性,这个属性指向函数的原型对象
-
__proto__
每个实例对象都有__proto__属性,这个属性指向构造函数的原型
-
constructor
每个原型都有一个constructor属性,指向该关联的构造函数
-
原型的原型
原型对象是通过Object构造函数生成的
原型的__proto__等于Object.prototype Object.prototype的__proto__等于null
new操作符
new操作符新建了一个空对象
这个对象原型指向构造函数的prototype
让函数中的this指向对象(call/apply)
执行构造函数后返回这个对象
bind/apply/call
-
三者都可以改变函数的this对象指向。
-
三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局window。
-
三者都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入。
-
bind 是返回绑定this之后的函数,便于稍后调用;apply 、call 则是立即执行 。
浅拷贝和深拷贝
浅拷贝:也就是拷贝A对象里面的数据,但是不拷贝A对象里面的子对象
深拷贝:会克隆出一个对象,数据相同,但是引用地址不同(就是拷贝A对象里面的数据,而且拷贝它里面的子对象)
赋值:获得该对象的引用地址