原型链模式--扩展1

批量设置原型上的公有属性和方法:

1、起一个别名(简单):

var pro=Fn.prototype;把原来原型指向的地址赋给pro,现在操作的是同一个内存空间

2、重构原型对象的方式:

自己新开辟一个堆内存,存储公有的属性和方法,把浏览器原来给Fn.prototype开辟的那个给替换掉

function Fn(){
     this.x=100;
 }
Fn.prototype={
    constructor:Fn,
    a:function(){
    },
    b:function(){
    }
};
image.png

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、按照原型链查找的机制,一步步的查找结果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容