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
  • 相关阅读:
    DP 免费馅饼 HDU1176
    知了课堂 Python Flask零基础 笔记整理
    Splay入门
    字典树
    榨取kkksc03 多维dp
    种族并查集总结
    倍增总结
    求最大公因数(辗转相除法&更相减损术)
    Bzoj 3036: 绿豆蛙的归宿(期望)
    Bzoj 1497: [NOI2006]最大获利(最小割)
  • 原文地址:https://www.cnblogs.com/winderby/p/4320343.html
Copyright © 2011-2022 走看看