前端小知识点扫盲笔记记录8 (2)

简介: 前端小知识点扫盲笔记记录8

复杂工厂模式

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title></title>
  </head>
  <body>
    <script>
      //第一步 定义自行车的构造函数 两个属性 一个name和一个方法method
      var BicycleShop = function (name) {
        this.name = name
        this.method = function () {
          return this.name
        }
      }
      BicycleShop.prototype = {
        constructor: BicycleShop,
        /*
         * 买自行车这个方法
         * @param {model} 自行车型号
         */
        sellBicycle: function (model) {
          var bicycle = this.createBicycle(model)
          // 执行A业务逻辑
          bicycle.A()
          // 执行B业务逻辑
          bicycle.B()
          return bicycle
        },
        createBicycle: function (model) {
          throw new Error(
            '父类是抽象类不能直接调用,需要子类重写该方法'
          )
        },
      }
      // 实现原型继承  Sub表示子类,Sup表示超类
      function extend(Sub, Sup) {
        // 首先定义一个空函数
        var F = function () {}
        // 设置空函数的原型为超类的原型
        F.prototype = Sup.prototype
        // 实例化空函数,并把超类原型引用传递给子类
        Sub.prototype = new F()
        // 重置子类原型的构造器为子类自身
        Sub.prototype.constructor = Sub
        // 在子类中保存超类的原型,避免子类与超类耦合
        Sub.sup = Sup.prototype
        if (
          Sup.prototype.constructor === Object.prototype.constructor
        ) {
          // 检测超类原型的构造器是否为原型自身
          Sup.prototype.constructor = Sup
        }
      }
      var BicycleChild = function (name) {
        this.name = name
        // 继承构造函数父类中的属性和方法
        BicycleShop.call(this, name)
      }
      // 子类继承父类原型方法
      extend(BicycleChild, BicycleShop)
      // BicycleChild 子类重写父类的方法
      BicycleChild.prototype.createBicycle = function () {
        var A = function () {
          console.log('执行A业务操作')
        }
        var B = function () {
          console.log('执行B业务操作')
        }
        return {
          A: A,
          B: B,
        }
      }
      var childClass = new BicycleChild('歌谣')
      console.log(childClass,"childClass")
            console.log(childClass.createBicycle())//a方法和b方法
            console.log(childClass.sellBicycle())//执行a b业务操作
    </script>
  </body>
</html>

如何写一个简单的回调函数

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>如何写一个简单的回调函数</title>
</head>
<body>
  <script>
//函数的参数为回调函数
function fangfang(callback) {
    var data = {
        "name": "fangyalan",
        "age": 18
    };
    callback(data);
}
//调用
fangfang(function (data) {
    //这里操作回调返回的数据
    console.log(data)
})
  </script>
</body>
</html>
相关文章
|
编解码 对象存储
阿里云视频转码转码模板-配置工作流
阿里云视频转码转码模板-配置工作流
236 0
获取虾皮全网站的商品详情信息的Python代码
获取虾皮全网站的商品详情信息的Python代码
|
数据采集 数据处理 索引
DataFrame
【10月更文挑战第13天】
1039 2
|
关系型数据库 MySQL 数据库
mysql 不需要使用密码就可以登录
最近发现一个问题, 就是我等了mysql客户端可以不输入密码. 直接输入mysql -u root 回车 或者 输入一个错的密码,都可进入到下面的界面. 在Navicat不用输入密码, 或者数据错的密码都可以连接数据库, 这比较愁人.
789 0
mysql 不需要使用密码就可以登录
|
11月前
|
移动开发 前端开发 JavaScript
Foundation 起步1
Foundation 是一个免费且移动优先的前端框架,旨在加速网站开发。它包含 HTML、CSS 设计模板及多种 UI 组件和 JavaScript 插件,适合各水平开发者使用。许多知名公司如 Facebook、eBay 等均采用 Foundation。响应式设计使其能适应不同设备。可通过官网或阿里云 CDN 获取。Modernizr 的集成确保了跨浏览器兼容性。
|
编解码 开发框架 数据挖掘
音视频开发常用工具 2
音视频开发常用工具
348 0
|
XML Java 数据处理
Android:RecyclerView封装,打造列表极简加载
此库的封装,除了刷新加载库使用了SmartRefreshLayout,其他的都是自己从0到1的开发,目前,自己已经在项目中使用,暂时没有出现任何问题,当然了,后续,也会不断的对其进行优化,增加一些其他的功能,希望有需要的小伙伴,长期关注。
510 0
|
开发工具 git
git clone 命令只下载了一个readme文件
git clone 命令只下载了一个readme文件
685 0
|
Python
python实现停车场管理系统
python实现停车场管理系统
448 0