美文网首页
原型链模式--扩展1

原型链模式--扩展1

作者: gaoqizhuhui | 来源:发表于2017-07-24 16:17 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:原型链模式--扩展1

          本文链接:https://www.haomeiwen.com/subject/idovkxtx.html