js 各种奇葩写法2

首先介绍js两个逆天原生方法 apply call

先看一段代码

function a1(a,b,c)
        {
            alert(a + b + c);
            this.AA = a;
            this.BB = b;
            this.CC = c;
        }
        function a2(a,b,c)
        {
           // a1.apply(this, arguments);
            a1.call(this, 1, 2, 3);
        }
        var tema = new a2(1, 2, 3);   这时会弹出6
        alert(tema.AA);  这时弹出 1

a1.apply(this, arguments);

这句话的意思是,执行a1这个方法,而参数确用this这个方法所用到的参数,

基于这个原理就有人发明了class这个方法

var Class = function ()
        {
            var klass = function ()
            {
                this.init.apply(this, arguments);
               
            };
             klass.prototype.init = function () {  };
            return klass;
        }
        var Prevson = new Class;
        Prevson.prototype.init = function (i)
        {
            alert(i);
        }
        var person = new Prevson(5);

我们成功做出来了一个构造函数,当new Rrevson的时候,就会执行init这个方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值