原型链模式拓展1

40 篇文章 0 订阅
32 篇文章 0 订阅
<script>
        //批量设置原型上的共有的属性和方法
        //1起一个别名
        var pro = Fn.prototype;//把原来原型指向的地址复制给我们的pro,现在他们操作的是同一个内存空间

        function Fn() {
            this.x = 100;
        }
        pro.getX = function () {
            console.log(this.x);  
        };
        pro.getY = function () {
            console.log(this.x);
            };
        pro.getZ = function () {
            console.log(this.x);
                };
        var f1 = new Fn;
        //2重构原型对象的方式->自己新开辟一个堆内存,存储我们共有的属性和方法,把浏览器原来给的Fn.prototype给替换掉
         function Fn() {
                this.x = 100;
            }
        Fn.prototype = {
            constructor : Fn,
            a:function () {

            },
            b: function () {

            }

        };

            var f = new Fn;
         //1.只有浏览器天生给Fn.prototype开辟的堆内存里面才有constructor,而我们自己开辟的这个堆内存没有这个属性
         //这样constructor指向就不在是Fn而是Object了  为了和原来的保持一致,我们需要手动增加constructor
            console.log(f.constructor);//->Object 手动增加上后指向Fn

        //2.用这种方式给内之类增加共有的属性
        //给内置类Array增加数组去重的方法
            // Array.prototype.unique = function () {

            // };
            // Array.prototype ={这样写是不可以的
            //     constructor:Array;
            //     unique:function(){

            //     }
            // };
            // console.dir(Array.prototype);
        //我们这种方法会把之前已经存在于原型上的属性和方法给替换掉,所以我们中这种方法修改内置类的话,浏览器是给屏蔽掉的
         //但是我们可以一个个修改内置的方法,当我们通过下述方式在数组的原型上增加方法,如果方法名和原来内置的重复了,会把人家内置的修改掉-->我们以后在内置类的
         //原型上增加方法,命名都需要加特殊的前缀     
                 Array.prototype.sort = function () {
                        console.log("okkkkk");
                    };
                var ary = [1,2,2,1,2,3,4,2,1,3];
                ary.sort();
                console.log(ary);


    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值