javascript原型模式

本文介绍了原型模式作为一种设计模式及编程泛型的应用。通过克隆现有对象而非实例化类来创建新对象,实现了对象创建过程的简化。文章还探讨了如何在不支持原生克隆方法的环境中实现这一模式,并提供了具体的JavaScript实现案例。

原型模式不单是一种设计模式,也被称为一种编程泛型。

从设计模式的角度讲,原型模式一种用于创建对象的模式。

要创建一个对象,一种方法是指定它的类型,然后通过类来创建这个对象。

原型模式选择了另外一种方式,不再关心对象的具体类型,而是找到一个对象,然后通过克隆来创建一个一模一样的对象。

如果使用原型模式,我们只需要调用负责克隆的方法,便能完成同样的功能。

原型模式的实现关键,是语言本身是否提供了clone方法。ECMAScript5提供了Object.create方法,可以用来克隆对象。

在不支持Object.create方法的浏览器中,则可以使用以下代码:

Object.create = Object.create || function(obj) {
    var F = function(){};
    F.prototype = obj;

    return new F();     
}

原型模式的真正目的并非在于需要得到一个一模一样的对象,而是提供了一种便捷的方式去创建某个类型的对象,克隆只是创建这个对象的过程和手段。

原型编程范型至少包括以下基本规则:

  1. 所有的数据都是对象;
  2. 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它;
  3. 对象会记住它的原型;
  4. 如果对象无法响应某个请求,它会把这个请求委托给它自己的原型。
Function.prototype.bind = function(context) {
    var self = this;
    return function() {
        return self.apply(context, arguments);
    }
}

Function.prototype.bind = function(){
    var self = this,
        context = [].shift.call(arguments),
        args = [].slice.call(arguments);

    return functon(){
        return self.apply(context, [].concat.call(args, [].slice.call(arguments)));
    }   
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值