寄生构造函数模式创建对象

博客介绍了一种模式,可在特殊情况下为对象创建构造函数。如创建具有额外方法的特殊数组,因不能直接修改Array构造函数,可使用该模式;还可用于原始库对象方法不好用时,创建具有更简便方法的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个模式可以在特殊的情况下用来为对象创建构造函数
例子一

假设我们想创建一个具有额外方法的特殊数组。

由于不能直接修改Array构造函数(此为使用寄生构造函数模式的原因)

function SpecialArray() {

    // 创建数组
    var values = new Array();

    // 添加值
    // values.push.apply(values, arguments);
    values.push(...arguments);

    // 添加方法
    values.toPipedString = function() {
        return this.join("|");
    };

    // 返回数组
    return values;
}

var colors = new SpecialArray("red""blue""green");
console.log(colors.toPipedString()); // console: "red|blue|green"
例子二

原始库对象的方法不好用, 我们想创建具有更简便方法的对象

function SpecialRapheal(id{

    // 创建Raphael实例
    var r = Raphael(id);

    // 添加方法
    r.line = function(obj{
        return this.path(obj.path)
            .attr({"stroke": obj.strokeColor, "stroke-width": obj.strokeWidth})
            .translate(obj.x || 0, obj.y || 0);
    };

    r.rec = function(obj{
        return this.path(obj.path)
            .attr({"stroke": obj.strokeColor, "fill": obj.fillColor})
            .translate(obj.x || 0, obj.y || 0);
    };

    r.cir = function(obj{
        return this.circle(obj.cx, obj.cy, obj.r)
            .attr({"stroke": obj.strokeColor, "stroke-width": obj.strokeWidth, "fill": obj.fillColor})
            .translate(obj.x || 0, obj.y || 0);
    }

    return r;
}

转载于:https://www.cnblogs.com/rencoo/p/10816838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值