批量设置原型上的公有属性和方法:
1、起一个别名(简单):
var pro=Fn.prototype;
把原来原型指向的地址赋给pro,现在操作的是同一个内存空间
2、重构原型对象的方式:
自己新开辟一个堆内存,存储公有的属性和方法,把浏览器原来给Fn.prototype开辟的那个给替换掉
function Fn(){
this.x=100;
}
Fn.prototype={
constructor:Fn,
a:function(){
},
b:function(){
}
};
1、只有浏览器天生给Fn.prototype开辟的堆内存里面才有constructor,而自己开辟的这个堆内存没有这个属性,这样constructor指向就不再是Fn而是Object了。为和原来保持一致,需要手动增加constructor的指向
2、用这种方式给内置类增加公有的属性:这种方式会把之前已经存在于原型上的属性和方法给替换掉,所以这种方法修改内置类的话,浏览器是给屏蔽掉的,但是可以一个个的修改内置方法(若方法名和原来内置重复了,会把人家内置的修改掉)在内置类的原型上增加方法,命名要加特殊的前缀,避免重复。
this应用:
在原型模式中,this常用的两种情况:
(1).在类中this.xxx=xxx;this--->当前类的实例
(2).某一个方法中的this--->看执行的时候" . "前面是谁this就是谁。具体步骤:
a、需要先确定this的指向(this是谁)
b、把this替换成对应代码
c、按照原型链查找的机制,一步步的查找结果