#yyds干货盘点 前端小知识点扫盲笔记记录4

简介: #yyds干货盘点 前端小知识点扫盲笔记记录4

MVC和MVVM

// 在MVVM框架下视图和模型是不能直接通信的,只能通过ViewModel进行交互,它能够监听到数据的变化, // 然后通知视图进行自动更新,而当用户操作视图时,VM也能监听到视图的变化,然后通知数据做相应改动, // 这实际上就实现了数据的双向绑定。并且V和VM可以进行通信。 // Model(模型) // 模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。 // View(视图) // 就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。 // ViewModel(视图模型) // 视图模型是暴露公共属性和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。 // 低耦合:View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 // 可重用性: 可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。 // 独立开发: 开发人员可以专注于业务逻辑和数据的开发,设计人员可以专注于页面的设计。 // MVC是应用最广泛的软件架构之一,一般MVC分为:Model(模型),View(视图),Controller(控制器)。 // 这主要是基于分层的目的,让彼此的职责分开.View一般用过Controller来和Model进行联系。 // Controller是Model和View的协调者,View和Model不直接联系。基本都是单向联系。M和V指的意思和MVVM中的M和V意思一样。 // C即Controller指的是页面业务逻辑。MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。 // 低耦合 // 重用性高 // 生命周期成本低 // 部署快 // 可维护性高 // 有利软件工程化管理


object.Create

<!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>Object.create</title>
</head>
<body>
  <script>
    //利用object.create实现继承
    function father(name){
      var name="geyao"
      this.name = name;
    }
    function children(){
        father.call(this)
    }
    children.prototype=Object.create(father.prototype);
    children.prototype.constructor=children
    var geyao=new children()
    console.log(geyao.name,"geyao") //geyao
  </script>
</body>
</html>



argument

<!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>arguments</title>
  </head>
  <body>
  <script>
            //arguments 是一个对应于传递给函数的参数的类数组对象。
    //这边的arguments[0]等价于fn
    var length = 10
    function fn() {
    console.log(this.length, 'length')
    }
    var obj = {
    length: 5,
    method: function (fn) {
      console.log(arguments[0], 'arguments')
      //      fn(){
      //     console.log(this.length,"length");
      //   } 'arguments'
      arguments[0]()
    },
    }
    obj.method(fn) //1
  </script>
  </body>
</html>


class类继承

<!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>Document</title>
  </head>
  <body>
  <script>
    class Rectangle {
    // constructor
    constructor(height, width) {
      this.height = height
      this.width = width
    }
    // Getter
    get area() {
      return this.calcArea()
    }
    // Method
    calcArea() {
      return this.height * this.width
    }
    }
    const rectangle = new Rectangle(10, 20)
    console.log(rectangle.area)
    // 输出 200
    // 继承
    class Square extends Rectangle {
    constructor(length) {
      super(length, length)
      // 如果子类中存在构造函数,则需要在使用“this”之前首先调用 super()。
      this.name = 'Square'
    }
    get area() {
      return this.height * this.width
    }
    }
    const square = new Square(10)
    console.log(square.area)
    // 输出 100
  </script>
  </body>
</html>
相关文章
|
存储 NoSQL Ubuntu
在Ubuntu上安装Redis并学习使用get、set和keys命令
在Ubuntu上安装Redis并学习使用get、set和keys命令
|
机器学习/深度学习 人工智能 算法
AIGC革新商业模式与用户体验
【1月更文挑战第19天】AIGC革新商业模式与用户体验
508 1
AIGC革新商业模式与用户体验
|
存储 NoSQL Java
什么是Cookie与Session之Session详解
什么是Cookie与Session之Session详解
1072 0
|
数据库连接 C++
什么是RAII原则
【10月更文挑战第19天】什么是RAII原则
495 1
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
338 1
|
XML JSON 前端开发
网络要素服务(WFS)详解
网络要素服务(WFS)详解
394 0
|
算法 数据库 计算机视觉
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
768 2
|
缓存 算法 BI
【天衍系列 02】深入理解Flink的FileSink 组件:实时流数据持久化与批量写入
【天衍系列 02】深入理解Flink的FileSink 组件:实时流数据持久化与批量写入
604 2
|
Linux C语言 C++
linux想做单细胞想下载Seurat,依赖包stringi要怎么安装
`stringi`是R语言中一个基于C/C++的二进制包,处理字符串操作,特别是国际化和本地化。安装时在不同平台上可能遇到麻烦,如GCC版本、网络或库版本问题。解决方法包括检查GCC版本、尝试使用Conda或按照官方指南配置。当网络导致下载失败时,可手动下载ICUDT并本地安装。本文提供了一种通过下载源码、解压、构建及安装的步骤来解决安装问题。
462 0
|
存储 NoSQL Redis
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
745 0