JS进阶(三):面向对象、面向过程、原型、constructor属性、对象原型、原型链

DPO(Direct Preference Optimization)实战全流程指南 《DPO实战全流程指南》摘要 本文提供了端到端的DPO(直接偏好优化)实战方案,包含数据准备、模型训练、评估部署全流程。核心内容包括: 数据构建:推荐UltraFeedback等高质量数据集,提供数据预处理代码 训练配置:基于HuggingFace TRL库的DPO实现,详解beta值等关键参数调优 工业优化:显存节省技巧(LoRA、梯度检查点)、领域自适应方法和在线学习架构 效果评估:量化对比显示DPO可降低86%有害回复率,提升24%用户满意度 常见问题:针对灾难性遗忘、过度安全化等问题给出解决方案 附 阅读详情

1、面向对象编程(oop)思想

面向过程,就是按照我们分析好的步骤,按照步骤解决问题。

面向对象是以功能来划分问题,而不是步骤。

2、构造函数

3、原型

1)原型

  <script>
    // function Star(uname, age) {
    //   this.uname = uname
    //   this.age = age
    //   this.sing = function () {
    //     console.log('唱歌')
    //   }
    // }
    // const peo1 = new Star('张三', 18)
    // const peo2 = new Star('李四', 18)
    // console.log(peo1.sing === peo2.sing); // false
    function Star(uname, age) {
      this.uname = uname
      this.age = age
      // this.sing = function () {
      //   console.log('唱歌')
      // }
    }
    Star.prototype.sing = function () {
      console.log('唱歌')
    }
    const peo1 = new Star('张三', 18)
    const peo2 = new Star('李四', 18)
    peo1.sing()
    peo2.sing()
    console.log(peo1.sing === peo2.sing); // true

  </script>

  <script>
    let that
    function Star(uname, age) {
      // that = this
      // console.log(that)
      this.uname = uname
      this.age = age
    }
    // 原型对象里面的函数 this 指向的还是实例对象 peo
    Star.prototype.sing = function () {
      that = this
      console.log('唱歌')
    }
    // 构造函数里面的 this 就是实例对象 peo
    const peo = new Star('张三', 18)
    peo.sing()
    console.log(that === peo); // true

  </script>
例子:给数组扩展方法
  <script>
    // 给数组扩展求最大值方法和求和方法
    // 最大值
    const arr = [1, 2, 3]
    Array.prototype.max = function () {
      // 展开运算符
      return Math.max(...this)
      // this 指向实例对象
    }
    console.log(arr.max())  // 3

    // 求和方法
    Array.prototype.sum = function () {
      return this.reduce((prev, item) => prev + item, 0)
    }
    console.log(arr.sum())  //6
    console.log([11, 22, 33].sum()) // 66

  </script>
2)constructor属性

        每个原型对象里面都有个constructor属性(constructor构造函数)

        作用:该属性指向该原型对象的构造函数

  <script>
    function hs() { }
    const res = new hs()
    console.log(hs.prototype)
    console.log(hs.prototype.constructor === hs)  // true

  </script>

  <script>
    function hs() { }
    // hs.prototype.name = function () {
    //   console.log('张三')
    // }
    // hs.prototype.age = function () {
    //   console.log(18)
    // }
    console.log(hs.prototype) // 有constructor
    hs.prototype = {
      // 重新指回这个原型对象的构造函数
      constructor: hs,
      name: function () {
        console.log('张三')
      },
      age: function () {
        console.log(18)
      }
    }
    console.log(hs.prototype) // 如果不加 constructor: hs 无constructor,不清楚原型对象了

  </script>
3)对象原型 __proto__

  <script>
    function hs() { }
    const res = new hs()
    console.log(res)
    // 对象原型 __proto__ 指向该构造函数的原型对象
    console.log(res.__proto__ === hs.prototype) // true
        // 对象原型里面有 constructor 指向 构造函数 hs
    console.log(res.__proto__.constructor === hs.prototype.constructor) // true
    console.log(res.__proto__.constructor === hs) // true

  </script>
4)原型继承

  <script>
    // 公共部分放到原型上
    // const hs = {
    //   eyes: 2,
    //   head: 1
    // }
    // 构造函数 new 出来的对象 结构一样,但是对象不一样
    function hs() {
      this.eyes = 2
      this.head = 1
    }
    // hx构造函数 想继承hs
    function hx() {

    }
    // hx通过原型来继承hs
    // 子类的原型 = new 父类
    hx.prototype = new hs()
    // 指回原来的构造函数
    hx.prototype.constructor = hs
    hx.prototype.name = function () {
      console.log('abc')

    }
    const res = new hx()
    console.log(res)

    // hy构造函数 想继承hs
    function hy() {

    }
    // 通过原型来继承hs
    hy.prototype = new hs()
    // 指回原来的构造函数
    hy.prototype.constructor = hy

    const cnt = new hy()
    console.log(cnt)

  </script>
5)原型链

        __proto__串起来的链

  <script>
    console.log(Object)
    console.log(Object.prototype)
    console.log(Object.prototype.__proto__) // 指向 null
    function peo() {

    }
    const res = new peo()
    // console.log(res.__proto__ === peo.prototype)  // true
    console.log(peo.prototype.__proto__ === Object.prototype) // true

  </script>

instanceof 作用
  <script>
    console.log(Object)
    console.log(Object.prototype)
    console.log(Object.prototype.__proto__) // 指向 null
    function peo() {

    }
    const res = new peo()
    // console.log(res.__proto__ === peo.prototype)  // true
    console.log(peo.prototype.__proto__ === Object.prototype) // true
    console.log(res instanceof peo) // true
    console.log(res instanceof Object) // true
    console.log(res instanceof Array) // false
    console.log([1, 2, 3] instanceof Array) // true
    console.log(Array instanceof Object) // true

  </script>

4、案例

<!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>
  <style>
    .modal {
      width: 300px;
      min-height: 100px;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
      border-radius: 4px;
      position: fixed;
      z-index: 999;
      left: 50%;
      top: 50%;
      transform: translate3d(-50%, -50%, 0);
      background-color: #fff;
    }

    .modal .header {
      line-height: 40px;
      padding: 0 10px;
      position: relative;
      font-size: 20px;
    }

    .modal .header i {
      font-style: normal;
      color: #999;
      position: absolute;
      right: 15px;
      top: -2px;
      cursor: pointer;
    }

    .modal .body {
      text-align: center;
      padding: 10px;
    }

    .modal .footer {
      display: flex;
      justify-content: flex-end;
      padding: 10px;
    }

    .modal .footer a {
      padding: 3px 8px;
      background: #ccc;
      text-decoration: none;
      color: #fff;
      border-radius: 2px;
      margin-right: 10px;
      font-size: 14px;
    }

    .modal .footer a.submit {
      background-color: #369;
    }
  </style>
</head>

<body>
  <button id="delete">删除</button>
  <button id="login">登录</button>

  <!-- <div class="modal">
    <div class="header">温馨提示 <i>x</i></div>
    <div class="body">您没有删除权限操作</div>
  </div> -->


  <script>
    // 模态框
    function Modal(title = '', message = '') {
      // 创建modal 模态框盒子
      // 创建div标签
      this.modalBox = document.createElement('div')
      // 给div标签添加类名为modal
      this.modalBox.className = 'modal'
      // modal盒子内部填充2个div标签并且修改文字内容
      this.modalBox.innerHTML = `
          <div class="header">${title} <i>x</i></div>
          <div class="body">${message}</div>
      `
      console.log(this.modalBox)

    }
    // new Modal('温馨提示', '你没有权限删除')
    // new Modal('友情提示', '你还没有注册账号')

    Modal.prototype.open = function () {
      // 先判断页面中是否有modal盒子
      const box = document.querySelector('.modal')
      box && box.remove()
      // 注意这个方法不要用箭头函数 因为我们需要用到 this
      // 把刚才创建的modalBox 显示到页面body中
      document.body.append(this.modalBox)
      // 盒子显示后,可以绑定点击事件
      this.modalBox.querySelector('i').addEventListener('click', () => {
        // 这个this指向实例对象
        this.close()
      })
    }
    Modal.prototype.close = function () {
      this.modalBox.remove()
    }
    document.querySelector('#delete').addEventListener('click', () => {
      // 先调用Modal构造函数
      const del = new Modal('温馨提示', '你没有权限删除')
      // 实例对象调用open方法
      del.open()
    })
    document.querySelector('#login').addEventListener('click', () => {
      // 先调用Modal构造函数
      const login = new Modal('友情提示', '你还没有注册账号')
      // 实例对象调用open方法
      login.open()
    })
  </script>
</body>

</html>
SAP 批量修改 工艺路线 和 BOM 1、在运维的过程中经常会遇到用户需要批量更改组件,或者是批量更改数量,还是组件里面的一些标识,当处理这些批量数据处理的业务时,BOM的批量更改一个想到的就是CS20,但是CS20当BOM需要替换的时候就不是很适用。当前工作区域:选择 SAP_ITEM 对BOM行项目进行变更,工艺路线也是可以批量更改的,根据实际的业务进行选择,我这里选择的就是BOM的组件变更。5、本博客将使用新的一种方式进行BOM的批量变更,标准的事务代码:CEWB对BOM进行批量更改。3、使用LSMW的方式进行BOM的批量更改。 阅读详情

相关推荐

CH569 USBSS库函数分析

CH569 USB3.0 解析

havc_W的博客 7685

javascript中的原型与原型链

一、什么是原型 原型:每一个javascript对象(除null外)创建的时候,都会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。 例如 var obj = new Object(); 创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型 二、prototype 在JavaScript中,每个函数都有一个pr...

涂涂 2万+

vivado中出现ERROR: [Labtools 27-2220]检测不出开发板

这个错误可能是由于 Vivado 工具中的 cs_server.exe 文件没有正确安装或者文件路径不正确导致的。你可以尝试以下步骤来。时间: 2023-08-16 12:05:50 浏览: 767。希望以上方法能够帮助你。

qq_40510975的博客 2388

【JavaScript】面向对象——原型与原型链(详解)

在JavaScript中,函数是一个包含属性和方法的类型的对象。而原型就是类型对象的一个属性。在函数定义时就包含了属性,它的初始值是一个空对象。在JavaScript中并没有定义函数的原型类型,所以原型可以是任何类型。原型是用于保存对象的共享属性和方法的,原型的属性和方法并不会影响函数本身的属性和方法。......

qq_49002903的博客 1943

内窥镜胶囊(胶囊内镜)硬件方案

内窥镜胶囊(胶囊内镜)硬件方案 前言 说明:该方案为作者2018年上半年完成的第一版,后来搁置了一段时间,才重启这个项目。目前(2020.07)第二版已经快要完成。[联系v:1#7#6#3#3#3#5#0#8#7#0]先给一下第一版和第二版的基本参数。 第一版: 续航时间:3h 帧率:0.5fps 尺寸:12mm * 25mm 角度:45° 第二版: 续航时间:12h 帧率:2-6fps 尺寸:9.8mm * 25mm 角度:130° 第一版属于尝试版,整体方案不是很成熟。第二版这个数据就非常优秀了。我拿了

CrekerLi的博客 4779

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

什么是对象原型,什么是原型对象,什么是constructor,什么是原型链,详细解析

原型对象 : prototype 概念:原型对象是构造函数上的一个属性,用来创建公共的方法 原型对象怎么使用? 如何使用原型对象设置公共方法? //语法: 构造函数.prototype.方法名 = function() {} function Student(uname) { this.uname = uname } // 设置公共方法 Student.prototype.eat = function () { ...

super帅的博客 2919

游戏经济数值模型的搭建过程——以标准卡牌游戏为例

一、总体规划 1.玩家分类 首先我们按照下表对玩家进行分类 付费能力即为充值额度;充值行为比如购买月卡/购买钻石;消费行为比如用钻石抽卡 在这里我们假设玩家是理性的,即玩家会以追求更高的性价比为目标进行充值与消费(即小R会优先买首冲+月卡,而不是买一个无用的无属性皮肤) 不同类型玩家之间的差异,实际上就主要由这些行为的差异而决定。 注:早期游戏制作的时候,活跃程度也是区分玩家类型的一个重要依据。不过目前现在游戏中有各种手段抹平了不同活跃玩家的差异(体力限制,活跃时间长的收益递减)..

dudu3332的博客 4228

js中的原型(原型对象,对象原型,原型继承,原型链)

原型对象,对象原型,原型继承,原型链,prototype属性,__proto属性,constructor属性

m0_57851747的博客 1319

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1604

【2025最新版】间接平差——以水准网平差为例 (python详细过程版)

水准网间接平差的python代码实现。博客长期更新,本文最新更新时间为:2025年5月20日。

点云侠的博客 1702

JavaScript原型和原型链

知识点引用类型都是对象,每个对象都有原型对象。对象都是由构造函数创建,对象的__proto__属性指向其原型对象,构造函数的prototype属性指向其创建的对象实例的原型对 象,所以对象的__proto__属性等于创建它的构造函数的prototype属性。所有通过字面量表示法创建的普通对象的构造函数为Object所有原型对象都是普通对象,构造函数为Object所有函数的构造函数是Function没有原型对象// f1、f2都是通过new Foo()创建的对象,构造函数为Foo,所以有。

Jas3000的博客 1165

SAPIEN ManiSkill3 入门教程(一)

请注意,table.set_pose(pose) 设置的是演员在世界帧中的坐标系姿势。移除的实体可以再次添加到场景中,但已在场景中的实体则不能再次添加。显示器可以是物理的(如显示器),也可以是虚拟的(如 VNC)。我们可以通过 get_pose()、get_linear_velocity() 和 get_angular_velocity()获取演员的运动量(姿势、线速度、角速度)。现在,让我们创建一个斜坡。例如,您可能需要一个简单的碰撞形状来进行快速模拟,但却需要一个复杂的视觉形状来进行逼真的渲染。

机器人控制与仿真应用 3074

JS原型和原型链详解

原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。说到原型会涉及两个概念:构造函数、原型对象。

Zhang_wang_yun的博客 1836

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript 原型/原型链

回到我们开篇的问题,class 关键字帮我们做了什么?instanceof 关键字又帮我们简化了什么?这两个问题的答案已经十分清晰了,但也不妨在这里做个总结:class 本质是一个语法糖,他帮我们处理绑定每个对象的原型,实现属性的共享。// 无 class 的写法// true// 对应的 class 写法显而易见的,class 的写法更符合我们面向对象的编程习惯,function 的写法则相对不那么直观。

专注前端领域方向的内容 1653

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JS原型和原型链

这周主要复习了JS高级相关的知识,但是还没复习完,下周把JS高级和ES6再复习复习。

2403_87892684的博客 988

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JS原型与原型链

一、什么是原型 原型:每个js对象(除null)创建的时候,都会与之关联另一个对象,这个对象就是我们说的原型,每一个对象都会从原型中“继承”属性。 例如: var obj = new Object(); 创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型 二、prototype 在js中,每个函数都有一个prototype属性,这个属性指向函数的原型对象,(函数也是个对象) var obj = new Object(); 所谓的prototype其

qq_45954420的博客 6336

【JavaScript】JavaScript 进阶(编程思想、构造函数、原型对象)

【JavaScript】JavaScript 进阶(编程思想、构造函数、原型对象)

“欢迎来到我的个人博客,我是一名热爱前端技术、致力于提升用户体验的前端开发工程师。” 921

【JS】理解 JavaScript 的原型与原型链

在 JavaScript 中,每个函数都有一个prototype属性,这个属性指向一个对象,这个对象就是该函数的原型对象。原型对象可以包含属性和方法,这些属性和方法可以被该函数创建的所有实例对象所共享。// 输出:Hello, my name is Alice// 输出:Hello, my name is Bob在上面的例子中,Person函数的prototype属性指向一个原型对象,该原型对象包含一个sayHello方法。person1和person2都是Person。

2301_78802081的博客 1254

浅析JS原型链

这里捋一下关系每个构造函数都有一个原型对象 原型对象的(prototype__proto__等于其构造函数的prototype,即每个__proto__都指向其构造函数的prototype原型对象(prototype)==对象原型(__proto__)construct是原型对象(prototype) 和 对象原型(__proto__)身上的一个属性而 constructor会记录当前对象属于哪个构造函数。这里举个例子吧、//语法: 构造函数.prototype.方法名 = function() {}

有什么问题回复不及时,可以私聊我。也可以加我的星球:知识爬行者 933

废物九重境弱者学JS第十五天--原型对象+对象原型

了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。基于原型对象的继承使得不同构造函数的原型对象关联在一起,并且这种关联的关系是一种链状的结构,我们将原型对。学习 JavaScript 中基于原型的面向对象编程序的语法实现,理解面向对象编程的特征。此时,我们可以在修改后的原型对象中,添加一个 constructor 指向原来的构造函数。作用:该属性指向该原型对象的构造函数, 简单理解,就是指向我的爸爸,我是有爸爸的孩子。

fw的博客 929

javascript中的原型与原型链_javascript 原型,原型链

原型:每一个javascript对象(除null外)创建的时候,都会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。例如创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型。

2401_87288877的博客 1789

JavaScript原型链全面解析

本文简明介绍了JavaScript中的核心概念:属性是对象的键值对,用于存储数据和方法;原型实现对象间的继承和共享;原型对象存放构造函数实例共享的方法;对象的原型是实例内部指向原型对象的引用;Object.prototype是所有普通对象的最终原型;constructor是原型对象指向构造函数的属性;原型链是由对象[[Prototype]]指针连接形成的继承体系。这些概念共同构成了JavaScript面向对象编程的基础机制,支撑着属性查找、方法共享和继承实现等核心功能。

2302_76681576的博客 1207

JavaScript进阶day3 面相对象VS面相过程 、构造函数、原型

1.编程思想1.编程思想1.1 面向过程介绍就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。1.2 面向对象介绍是把事务分解成为一个个对象,然后由对象之间分工与合作。面向对象是以对象,而不是步骤。在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工。面向对象编程具有灵活、代码可复用、容易维护和开发的优点,更适合多人合作的大型软件项目。面向对象的特性:封装性继承性多态性1.3 面向过程和面向对象的对比。

2301_77358195的博客 887

JavaScript 进阶 ③

> 了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。 - 编程思想 - 构造函数 - 原型 - 综合案例

闲杂人 1472

JavaScript 面向对象编程继承上【三】(原型对象,prototype 属性,原型链,constructor 属性)

JavaScript 是一门集成了函数编程和面向对象编程的动态语言。它的对象是一个容器,封装了属性(property)和方法(method)。JavaScript的面向对象实现不是基于类,而是基于构造函数(constructor)和原型链(prototype)实现的。 一.继承概述 本文主要介绍了原型对象,prototype 属性,原型链,constructor 属性。 原型对象介绍? ...

妖怪的博客 404
上一篇: JS进阶(二):创建对象的方式、构造函数、实例成员&静态成员、内置构造函数(Object、Array、String、Number)
下一篇: JS进阶(四):深浅拷贝、异常处理(throw、try/catch捕获异常、debugger)、处理this、改变this(call、apply、bind)、性能优化(防抖、节流)
01star️
博客等级 码龄3年 96粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值