原型 原型链 call/apply 继承模式
构造函数的三段式
隐式生成对象this={},生成的this并不是空对象,而是有__proto__:Person.prototype,指向当前引用的原型。
prototype(原型)
会先找自己有没有这个属性,如果没有会沿着__proto__指向的寻找有没有。
可以修改__proto__的指向。
方法里的this指向:谁调用此方法,就指向谁。
绝大多数对象的最终都会继承自object.prototype,或者null
可正常计算的范围 小数点前16位后16位。
方法名.call() 会改变方法内部this的指向,指向第一个参数,后面的参数是正常传实参。
apply,第一个参数同样是指向的对象,但实参只能传一个数组形式的。
即:
call需要把实参按照行形参的个数传进去。
apply需要把实参放进一个arguments传进去。
传统形式 (原型链) :会过多继承没用的属性。
借用构造函数:不能继承借用构造函数的原型。每次构造函数都要多走一个函数。
共享模式:不能随意改动自己的原型。
圣杯模式:
function inherit(Target,Origin){
function F(){};
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constuctor = Target;
Target.prototype.uber = Origin.prototype;
}