前端小知识点扫盲笔记记录7-1

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

单体模式应用弹框

<!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>
  <div id="Id">我是歌谣</div>
  <script>
    // 实现单体模式弹窗
    var createWindow = (function () {
      var div;
      return function () {
        if (!div) {
          div = document.createElement("div");
          div.innerHTML = "我是弹窗内容";
          div.style.display = 'none';
          document.body.appendChild(div);
        }
        return div;
      }
    })();
    document.getElementById("Id").onclick = function () {
      // 点击后先创建一个div元素
      var win = createWindow();
      win.style.display = "block";
    }
  </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>
      //      对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto__原型的存在
      // 每个对象都有__proto__原型的存在
      //// 原型的构造器指向构造函数。
      //原型上添加方法注意的地方 构造器指向构造函数本身
      //Star.prototype = {}给原型重新赋值,此时会丢失构造器,
      //我们需要手动定义构造器,指回构造函数本身
      // 原型的构造器指向构造函数。
      function Animal(name) {
        this.name = name
      }
      let obj = new Animal('小猴')
      console.log(Animal.prototype.constructor === Animal) //true
      console.log(obj.__proto__.constructor === Animal) //true
      //原型上添加方法注意的地方 构造器指向构造函数本身
      function Star(name) {
        this.name = name
      }
      Star.prototype.dance = function () {
        console.log(this.name)
      }
      let geyao = new Star('小花')
      console.log(geyao.__proto__) //{dance: ƒ, constructor: ƒ}
      console.log(geyao.__proto__.constructor) // Star
            //赋值{}
      function Star(name) {
        this.name = name
      }
      Star.prototype = {
        dance: function () {
          console.log(this.name)
        },
      }
      let fangfang = new Star('小红')
      console.log(fangfang.__proto__) //{dance: ƒ}
      console.log(fangfang.__proto__.constructor) //  ƒ Object() { [native code] }
      Star.prototype.constructor = Star
    </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>
      //ES6之前并没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟实现继承。
      // 继承属性,利用call改变this指向。但该方法只可以继承属性,实例不可以使用父类的方法。
      // function Father(name) {
      //  this.name = name
      // }
      // Father.prototype.dance = function () {
      //  console.log('我会跳舞')
      // }
      // function Son(name, age) {
      //  Father.call(this, name)
      //  this.age = age
      // }
      // let son = new Son('歌谣', 100)
      // son.dance() //报错
      // 解决方法1:利用Son.prototype = Father.prototype改变原型指向,但此时我们给子类增加原型方法,同样会影响到父类。
      // function Father(name) {
      //  this.name = name
      // }
      // Father.prototype.dance = function () {
      //  console.log('我会跳舞')
      // }
      // function Son(name, age) {
      //  Father.call(this, name)
      //  this.age = age
      // }
      // Son.prototype = Father.prototype
      // //为子类添加方法
      // Son.prototype.sing = function () {
      //  console.log('我会唱歌')
      // }
      // let son = new Son('歌谣', 100)
      // //此时父类也被影响了
      // console.log(Father.prototype) //{dance: ƒ, sing: ƒ, constructor: ƒ}
      //解决方法2:子类的原型指向父类的实例,这样就可以顺着原型链共享父类的方法了。并且为子类添加原型方法的时候,不会影响父类。
      function Father(name) {
        this.name = name
      }
      Father.prototype.dance = function () {
        console.log('我会跳舞')
      }
      function Son(name, age) {
        Father.call(this, name)
        this.age = age
      }
      Son.prototype = new Father()
      Son.prototype.sing = function () {
        console.log('我会唱歌')
      }
      let son = new Son('歌谣', 100)
      console.log(Father.prototype) //{dance: ƒ, constructor: ƒ}
    </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>
            //方法等同于Object.create()
            //返回原来的原型对象
      function object(obj) {
        function F() {}
        F.prototype = obj
        return new F()
      }
            //利用一个空对象作为中介,将某个对象直接赋值给空对象构造函数的原型。
      var person = {
        name: 'Nicholas',
        friends: ['Shelby', 'Court', 'Van'],
      }
      var anotherPerson = object(person)
      anotherPerson.name = 'Greg'
      anotherPerson.friends.push('Rob')
      var yetAnotherPerson = object(person)
      yetAnotherPerson.name = 'Linda'
      yetAnotherPerson.friends.push('Barbie')
    //原型链继承多个实例的引用类型属性指向相同,存在篡改的可能。
   // 无法传递参数
      console.log(person.friends) //"Shelby,Court,Van,Rob,Barbie"
    </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>双飞翼布局220402</title>
</head>
<style>
  .float {
    float: left;
  }
  #main {
    width: 100%;
    height: 200px;
    background-color: lightpink;
  }
  #main-wrap {
    margin: 0 190px 0 190px;
  }
  #left {
    width: 190px;
    height: 200px;
    background-color: lightsalmon;
    margin-left: -100%;
  }
  #right {
    width: 190px;
    height: 200px;
    background-color: lightskyblue;
    margin-left: -190px;
  }
</style>
<body>
  <!-- 圣杯布局:为了让中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: 
    relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。
双飞翼布局:为了让中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,
在该div里用margin-left和margin-right为左右两栏div留出位置。 -->
  <div id="main" class="float">
    <div id="main-wrap">main</div>
  </div>
  <div id="left" class="float">left</div>
  <div id="right" class="float">right</div>
</body>
</html>
相关文章
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1006 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
318 0
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
450 6
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
583 1
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
594 1
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
576 0
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
296 0
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
363 2

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
  • 3
    Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 6
    实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距