zoukankan      html  css  js  c++  java
  • javascript模式——Prototype模式

    GoF权威的解释是,原型模式是一种通过对一个对象的克隆,创建基于这个对象的多种对象的模式。

    为了实现这种原型模式,可以直接使用ECMAScript 5 中的方法Object.create。它不紧可以创建出对特定对象的扩展出的对象,还可以增加新属性。

    var vehicle = {
      getModel: function () {
        console.log( "The model of this vehicle is.." + this.model );
      }
    };
    
    var car = Object.create(vehicle, {
     
      "model": {
        value: "Ford",
        enumerable: true
      }
     
    });
    
    car.getModel()

    Object.create第一个参数为要扩展的对象,对二个参数为新增属性。详细的使用方法可查MDN。

    遍历可枚举属性时有一个问题,他会遍历原型链中的所有元素,需要用Object.hasOwnProperty进行筛选。

    检查代码如下:

    // 只输出car中的属性值。
    for(var name in car ){
        if(car.hasOwnProperty(name)){
            console.log(car[name])
        }
    }

    在不支持Object.create的时候,比如IE8,我们按上面按上面的示例也可以模拟出原型模式

    var vehicle = {
      getModel: function () {
        console.log( "The model of this vehicle is.." + this.model );
      }
    };
    
    var car = (function(){
        function F(){
            this.model = "Ford";
        }
        F.prototype = vehicle;
        var f = new F();
        return f;
    })()
    
    car.getModel(); // Ford
  • 相关阅读:
    大型网站随着业务的增长架构演进
    springboot日志logback配置
    一些容易出错的细节
    从一个下载优化说起
    徒手优化冒泡排序
    php设计模式之观察者模式
    php设计模式之抽象工厂模式
    phper談談最近重構代碼的感受(3)
    php设计模式----工厂模式
    偏执的我从Linux到Windows的感受
  • 原文地址:https://www.cnblogs.com/winderby/p/4320343.html
Copyright © 2011-2022 走看看