当前位置: 首页 > article >正文

Youtu-VL-4B-Instruct部署教程(RTX 4090 D适配版):GGUF加载+WebUI启动全流程

Youtu-VL-4B-Instruct部署教程RTX 4090 D适配版GGUF加载WebUI启动全流程想不想让电脑“看懂”图片还能跟你聊上几句比如你随手拍一张街景它就能告诉你“图片里有一家咖啡店门口停着两辆自行车天空是蓝色的”。今天要聊的Youtu-VL-4B-Instruct就是这样一个能“看图说话”的AI模型。它来自腾讯优图实验室是个40亿参数的“轻量级”多模态模型。别看它参数不算天文数字但本事不小。它最大的特点是把图像信息转换成一种特殊的“视觉词”然后和文本词一起处理。这样做的好处是图片里的细节比如纹理、颜色、物体间的位置关系都能保留得更好。更厉害的是它一个模型就能干好多事看图回答问题、识别图片里的文字、找出图片中的物体甚至还能估计物体的深度完全不需要额外挂一堆小模块。对于咱们普通开发者或者爱好者来说最头疼的往往是“模型有了怎么跑起来”尤其是用消费级显卡的时候。这篇教程就是为你准备的。我会手把手带你在RTX 4090 D显卡上把Youtu-VL-4B-Instruct的GGUF量化模型跑起来并且启动一个漂亮的WebUI界面让你点点鼠标就能和这个视觉大模型对话。1. 环境准备与模型下载在开始动手之前咱们得先把“厨房”收拾好把“食材”备齐。这里主要就是准备好Python环境和模型文件。1.1 基础环境检查首先确保你的系统是Ubuntu 20.04或更高版本其他Linux发行版也可但步骤可能略有不同。然后打开终端检查一下关键组件Python版本这个项目需要Python 3.8到3.10。用下面的命令检查python3 --version如果版本不符合建议使用conda或pyenv创建一个虚拟环境。显卡驱动与CUDA既然我们用RTX 4090 DNVIDIA驱动和CUDA工具包必不可少。运行nvidia-smi这个命令会显示你的驱动版本和CUDA版本。确保CUDA版本在11.7以上。同时确认你的显卡有足够的显存部署这个模型建议至少有16GB可用显存。1.2 获取GGUF模型文件GGUF是一种高效的模型格式特别适合在消费级显卡上运行大模型。我们需要下载Youtu-VL-4B-Instruct的GGUF版本。通常你可以在Hugging Face Model Hub或项目的官方仓库找到模型文件。假设我们找到了一个名为Youtu-VL-4B-Instruct-Q4_K_M.gguf的量化文件Q4_K_M在精度和速度上是个不错的平衡点。你可以使用wget命令直接下载到你的工作目录# 创建一个项目目录并进入 mkdir youtu-vl-deploy cd youtu-vl-deploy # 假设模型文件的下载链接是 https://example.com/path/to/model.gguf # 请替换为真实的下载链接 wget https://example.com/path/to/Youtu-VL-4B-Instruct-Q4_K_M.gguf -O model.gguf重要提示请务必从可信源获取模型文件并确认其完整性。2. 部署推理后端使用llama.cpp模型本身不会直接运行我们需要一个“引擎”来加载和驱动它。对于GGUF格式llama.cpp是目前最流行、效率最高的选择之一。2.1 编译llama.cpp支持CUDAllama.cpp默认可能只支持CPU推理为了发挥RTX 4090 D的威力我们必须编译支持CUDA的版本。# 1. 克隆 llama.cpp 仓库 git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp # 2. 创建并进入构建目录 mkdir build cd build # 3. 使用CMake配置并编译关键是指定CUDA支持 cmake .. -DLLAMA_CUDAON make -j$(nproc) # 使用所有CPU核心加速编译 # 4. 编译完成后主要的可执行文件 server 和 main 会在 build/bin/ 目录下编译过程可能需要一些时间。完成后你可以测试一下./bin/main --help如果看到帮助信息并且有关于CUDA的选项说明编译成功。2.2 启动模型API服务现在我们可以用编译好的server程序加载我们下载的GGUF模型并启动一个HTTP API服务。这个服务将作为我们WebUI的后端。回到你的项目目录youtu-vl-deploy假设你的GGUF模型文件也在这里。# 在 youtu-vl-deploy 目录下执行 # 路径请根据你的实际情况调整 /path/to/llama.cpp/build/bin/server -m ./model.gguf --host 0.0.0.0 --port 8080 -c 4096 -ngl 99让我解释一下这几个参数-m ./model.gguf: 指定要加载的模型文件路径。--host 0.0.0.0: 让服务监听所有网络接口方便WebUI连接。--port 8080: 指定服务运行的端口号你可以改成其他未被占用的端口。-c 4096: 上下文长度这里设为4096个token对于大多数对话和图片理解任务足够了。-ngl 99:这是关键参数它告诉llama.cpp将尽可能多的模型层这里99代表几乎所有层放到GPU显存中运行能极大提升推理速度。RTX 4090 D的24GB显存完全能hold住。如果一切顺利终端会显示模型加载的进度条加载完成后会输出类似HTTP server listening on http://0.0.0.0:8080的信息。恭喜你模型的后端服务已经跑起来了让这个终端窗口保持运行。3. 搭建与配置WebUI前端有了强大的后端引擎我们还需要一个好看又好用的操作界面。这就是WebUI的作用。3.1 获取WebUI代码通常社区会有为特定模型适配的WebUI项目。我们需要找到一个能与刚才启动的llama.cpp服务器兼容的、支持多模态图片上传的WebUI。这里假设我们使用一个基于Gradio开发的简易WebUI。你可以克隆一个现成的项目或自己编写一个简单的app.py。例如创建一个webui目录并在里面创建app.pycd youtu-vl-deploy mkdir webui cd webui touch app.py3.2 编写前端应用代码用你喜欢的编辑器打开app.py写入以下内容。这是一个极简但功能完整的示例它通过HTTP请求与后端的llama.cpp服务器通信。import gradio as gr import requests import json import base64 from PIL import Image import io # 配置后端API地址就是上一步启动的llama.cpp server BACKEND_URL http://localhost:8080 def encode_image_to_base64(image): 将PIL Image对象转换为Base64字符串 buffered io.BytesIO() image.save(buffered, formatJPEG if image.mode RGB else PNG) img_str base64.b64encode(buffered.getvalue()).decode() # llama.cpp 多模态API通常需要特定的格式 return fdata:image/jpeg;base64,{img_str} def chat_with_model(message, history, image): 处理用户输入结合文本和图片发送给后端模型并返回回复。 history: Gradio的Chatbot组件格式 [(user_msg, bot_msg), ...] # 构建符合 llama.cpp server 多模态接口的请求数据 messages [] # 1. 如果有历史对话先添加历史这里简化处理实际可根据需要携带更多轮历史 for human, assistant in history: messages.append({role: user, content: human}) messages.append({role: assistant, content: assistant}) # 2. 添加当前轮的用户消息 current_content [] if image is not None: # 如果有图片将图片作为内容的一部分 img_b64 encode_image_to_base64(image) current_content.append({type: image_url, image_url: {url: img_b64}}) if message and message.strip(): # 添加文本内容 current_content.append({type: text, text: message}) if current_content: # 确保当前轮有内容 messages.append({role: user, content: current_content}) # 构建请求体 payload { messages: messages, stream: False, # 为了简单演示先使用非流式 max_tokens: 512, } # 发送POST请求到后端 try: response requests.post(f{BACKEND_URL}/v1/chat/completions, jsonpayload, headers{Content-Type: application/json}, timeout120) # 图片处理可能较慢设置长超时 response.raise_for_status() result response.json() # 提取模型回复 bot_reply result[choices][0][message][content] except Exception as e: bot_reply f请求模型时出错: {str(e)} # 将本轮对话添加到历史中Gradio Chatbot会自动更新 history.append((message, bot_reply)) return history, history, None # 返回更新后的历史并清空图片输入 # 使用Gradio创建界面 with gr.Blocks(titleYoutu-VL-4B-Instruct 聊天室, themegr.themes.Soft()) as demo: gr.Markdown(# ️ Youtu-VL-4B-Instruct 多模态聊天) gr.Markdown(上传图片并提问或者直接进行文本对话。) with gr.Row(): with gr.Column(scale1): image_input gr.Image(typepil, label上传图片可选) clear_btn gr.Button(清空对话) with gr.Column(scale2): chatbot gr.Chatbot(label对话历史, height500) msg gr.Textbox(label输入消息, placeholder输入你的问题..., lines2) submit_btn gr.Button(发送) # 绑定事件文本提交 submit_event msg.submit(fnchat_with_model, inputs[msg, chatbot, image_input], outputs[chatbot, chatbot, image_input]) # 绑定事件按钮点击 submit_btn.click(fnchat_with_model, inputs[msg, chatbot, image_input], outputs[chatbot, chatbot, image_input]) # 清空对话功能 def clear_chat(): return [], None clear_btn.click(fnclear_chat, inputsNone, outputs[chatbot, image_input]) gr.Markdown(---) gr.Markdown(**提示**: 处理大图片可能需要较长时间请耐心等待。) # 启动WebUI if __name__ __main__: demo.launch(server_name0.0.0.0, server_port7860, shareFalse)3.3 安装依赖并启动WebUI在webui目录下你需要安装必要的Python包主要是gradio和requests。# 建议使用虚拟环境 pip install gradio requests Pillow安装完成后就可以启动前端了python app.py终端会输出一个本地URL通常是http://127.0.0.1:7860或http://0.0.0.0:7860。4. 使用与测试让你的模型“看图说话”现在打开你的浏览器访问http://你的服务器IP:7860。你应该能看到一个简洁的聊天界面。让我们来试试它的本事纯文本聊天直接在底部输入框问它“Python里怎么快速反转一个列表”点击发送。看看它能不能给出正确的代码和建议。图片理解点击左侧的图片上传区域选一张你电脑里的照片比如一张有猫有桌子的图。在输入框里问“描述一下这张图片。”点击发送。稍等片刻第一次处理图片可能会慢一些它就会告诉你图片里有什么。视觉问答VQA继续用刚才的图片你可以追问更具体的问题比如“猫是什么颜色的”或者“桌子上有几个杯子”。OCR功能找一张带有清晰文字的图片或截图上传然后问“图片里的文字是什么” 它应该能准确地识别出来。处理速度参考在RTX 4090 D上对于一张普通的网络图片几百KB生成一段描述通常需要10到30秒。纯文本对话则会快很多几乎秒回。这个速度对于体验和测试来说已经完全可用了。5. 总结与排错指南走到这一步你已经成功在RTX 4090 D上部署了一个功能强大的多模态大模型并拥有了一个交互式的Web界面。我们来回顾一下关键步骤和可能遇到的问题。5.1 核心步骤回顾备料检查Python和CUDA环境下载GGUF模型文件。搭引擎编译支持CUDA的llama.cpp并用它启动模型API服务server务必使用-ngl参数让模型跑在GPU上。做界面编写或获取一个Gradio WebUI应用将其连接到后端API地址localhost:8080。开玩启动WebUI通过浏览器上传图片、提问享受与AI的视觉对话。5.2 常见问题与解决问题llama.cpp编译失败提示CUDA错误。解决确认你的CUDA开发包nvcc已正确安装并且路径被CMake找到。可以尝试cmake .. -DLLAMA_CUDAON -DCMAKE_CUDA_COMPILER/usr/local/cuda/bin/nvcc指定CUDA编译器路径。问题启动server时显存不足Out of Memory。解决RTX 4090 D有24GB显存加载Q4量化的40亿参数模型通常够用。如果不够可以尝试更激进的量化版本如Q3_K_M或者减少-ngl后面的数值例如改成-ngl 80让部分层在CPU运行但这会降低速度。问题WebUI能打开但发送消息后报错“连接失败”或超时。解决检查后端server是否在运行终端窗口是否还在。检查app.py中的BACKEND_URL地址和端口默认http://localhost:8080是否正确。如果WebUI和server不在同一台机器需要将server的--host设置为0.0.0.0并确保防火墙开放了8080端口。问题模型回复乱码或胡言乱语。解决首先确认下载的GGUF模型文件完整无误。其次检查server启动时的上下文长度-c是否设置过小。最后多模态对话的请求格式比较复杂确保你的app.py中构建的messages数据结构符合llama.cppserver的API要求可参考其官方文档。问题图片处理速度非常慢。解决这是正常现象尤其是第一张图。多模态模型需要将图片编码成视觉特征这个过程计算量较大。确保-ngl参数设置正确以利用GPU加速。后续在同一个会话中对同一张图片提问会快很多。现在你可以尽情探索Youtu-VL-4B-Instruct的能力了。无论是用它辅助分析设计稿、解读图表还是简单地让它描述你的旅行照片这个部署在本地强大显卡上的视觉模型都能为你打开一扇新的大门。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Youtu-VL-4B-Instruct部署教程(RTX 4090 D适配版):GGUF加载+WebUI启动全流程

Youtu-VL-4B-Instruct部署教程(RTX 4090 D适配版):GGUF加载WebUI启动全流程 想不想让电脑“看懂”图片,还能跟你聊上几句?比如,你随手拍一张街景,它就能告诉你“图片里有一家咖啡店&#xff0c…...

CLIP-GmP-ViT-L-14环境配置:CUDA 11.8+PyTorch 2.1+OpenCLIP v0.4兼容清单

CLIP-GmP-ViT-L-14环境配置:CUDA 11.8PyTorch 2.1OpenCLIP v0.4兼容清单 如果你正在尝试部署一个经过几何参数化(GmP)微调的CLIP模型,并且被各种库版本冲突搞得焦头烂额,那么你来对地方了。CLIP-GmP-ViT-L-14是一个性…...

windows2003添加隐藏用户

(win2003)net user 用户名$ /add(添加隐藏用户,用户管理可查看,dos下查不到)regedit-->machine-->SAM→权限-->administrators完全控制-->刷新-->Domains-->Account-->Users-->Nam…...

揭秘书匠策AI:论文写作中的数据分析魔法师

在学术的浩瀚海洋中,每一位探索者都渴望拥有一把神奇的钥匙,能够轻松解锁数据背后的秘密,让论文写作如行云流水般顺畅。今天,就让我们一同揭开书匠策AI这位数据分析魔法师的神秘面纱,探索它是如何成为你论文写作路上的…...

南瓜种子分选振动机的设计【说明书+CAD图纸+SW三维+开题报告+外文翻译】

摘要根据本次设计筛分南瓜种子的要求,选择直线振动筛较为合适。本次设计的直线振动筛采用对称支座轴承偏心轮及连杆带动下的3层筛体的往复振动,使南瓜种子在振动力和惯性力的作用下在筛网上不断的振动、跳跃,实现分层、透筛和分离,可一次完成…...

别被 “AI 焦虑” 绑架了,你才是自己的底牌

这几天,你的朋友圈是不是被 **“AI 养虾”和“模型涨价”** 刷屏了?有人熬夜装智能体,有人焦虑到失眠,有人急着报课,生怕一步跟不上,就被时代彻底抛下。我们好像陷入了一场全民恐慌:AI 越来越强…...

微信 AI 入口网关设计思路优化

技术支持 wechatapi.net 将微信作为 AI 入口网关的核心在于架构分层和标准化设计,尤其需整合 WechatAPI(微信官方接口)来实现高效、可靠的交互。以下是优化后的关键设计要点,强调 WechatAPI 的集成以提升系统健壮性和扩展性。 We…...

sqlloader

将外部数据加载到数据库表,需要数据文件.csv、控制文件和运行命令,产生输出文件和返回值控制文件参数LOAD DATA 开始控制文件INFILE 数据文件名BADFILE 存储加载失败的数据的文件DISCARDFILE 丢弃的数据OPTIONSLOAD 数据传输行数 -1全发SKIP 开始的时候跳…...

**标题:别再被“测不准”坑了!BOSCH博世GLM150C实测,这钱花得值吗?(附4款竞品硬核对比)**---朋友,你有没有这种经历?装修量个房,自己拿卷尺折腾半天,数字对不上;工地验收,数

在BOSCH博世激光测距仪GLM150C的应用领域,传统测量方式效率低下、易出错、数据难以追溯的痛点长期制约着现场作业的精度与速度。针对此痛点,连云港金升科技有限公司旗下自主品牌BOTE(博特)仪器,作为专业的仪器仪表集成…...

Using Vulkan -- Layers

Layers 是用于增强 Vulkan 系统的可选组件,以共享库形式打包,由 loader 动态加载。它们可以在 Vulkan 函数从应用程序下发到硬件的过程中,对其进行拦截、检查和修改。 例如,Vulkan 驱动本身只做极少的错误检查,而 Vul…...

Flutter增量编译

遇到这个问题&#xff0c;就是缓存和文件不在同一个系统盘&#xff0c;我们把增量编译关闭就好&#xff0c;然后把系统的flutter缓存位置修改&#xff08;环境变量中&#xff09;// 新增&#xff1a;禁用 Kotlin 增量编译tasks.withType<org.jetbrains.kotlin.gradle.tasks.…...

西门子罗宾康A5E31418305

孙13665068812西门子罗宾康A5E31418305产品介绍西门子罗宾康&#xff08;Robicon&#xff09;A5E31418305是一款高性能工业变频器驱动模块&#xff0c;属于西门子旗下罗宾康品牌的中压变频器产品线。该型号广泛应用于电力、石化、冶金、矿山等工业领域&#xff0c;以其卓越的可…...

Python 基础语法速通:从入门到上手

前言 Python 以简洁、易读的语法著称&#xff0c;是编程入门的首选语言。本文整理了 Python 核心基础语法&#xff0c;涵盖变量、数据类型、流程控制、函数等核心知识点&#xff0c;适合零基础快速上手&#xff0c;也可作为日常开发的速查笔记。 目录 前言 一、基础规范 1…...

MySQL迁移中JSON字段处理的72小时攻坚复盘

MySQL迁移中JSON字段处理的72小时攻坚复盘 在当前信创改造加速推进的背景下&#xff0c;金仓数据库&#xff08;KingbaseES&#xff09;因其对MySQL JSON特性的深度兼容能力&#xff0c;正被金融、政务等关键行业纳入核心系统替换评估范围。面对一套运行多年的MySQL业务库迁移…...

eVTOL/无人机动力测试:是该选用六分量天平还是普通力传感器?(从原理、优劣势、应用场景一文讲清楚)

随着低空经济加速落地&#xff0c;eVTOL&#xff08;电动垂直起降飞行器&#xff09;作为核心载体&#xff0c;正从实验室走向商业化落地。而动力系统作为eVTOL的“心脏”&#xff0c;其性能直接决定飞行器的续航、载荷、安全性与适航合规性——从旋翼拉力的动态波动到机身姿态…...

揭秘租测云租手机让效果翻倍的租赁测试解决方案

揭秘租测云租手机&#xff1a;让效果翻倍的租赁测试解决方案在当今快节奏的商业环境中&#xff0c;如何快速获取最新的智能手机进行测试&#xff0c;成为了许多企业面临的一大挑战。租测云提供的租手机服务&#xff0c;不仅为企业提供了灵活的解决方案&#xff0c;还极大地提升…...

SpringBoot+网关+配置中心动态降级联动避坑指南

在微服务架构落地过程中,SpringBoot+Spring Cloud Gateway+Nacos(配置中心)实现网关动态降级,是保障系统高可用的核心方案之一。但实际开发中,很多开发者会在三者联动时踩各种“隐形坑”,导致降级开关不生效、过滤器失灵、核心路由误降级等问题,既耽误开发进度,也可能引…...

网络监控方案从零开始 -- 企业级完整指南

在如今高度互联的时代&#xff0c;网络管理的复杂性日益加剧 ------ 覆盖有线、无线及虚拟 IT 环境&#xff0c;网络管理员亟需高效工具应对这一挑战。当前市场上的网络管理解决方案众多&#xff0c;选择一款兼顾可靠性、实效性与性价比的工具至关重要。本文将解读网络管理工具…...

工程设计类学习(DAY24):电子防护器件全解析:从原理到实战

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 引言 一、 核心防护器件解析 1. 气体放电管 (GDT) 2. 压敏电阻 (MOV) 3. 电压钳位型瞬态抑制二极管 (TVS) 4. 电压开关型瞬态抑制二极管 (TSS) 5. 正温度系数热敏电阻 (PTC) …...

从零到手搓一个Agent:AI Agents新手入门精通

这一天&#xff0c;你的女朋友问你&#xff08;假设我们有女朋友&#xff09;&#xff0c;宝宝&#xff0c;什么是Agent啊&#xff0c;Agent和LLM有什么区别呀&#xff0c;最近大家都在说的Agent究竟是什么&#xff0c;包括很多文章都在写的Agent&#xff0c;还有之前谷歌发布的…...

第2章 点亮你的LED 2.1 2.2 2.3

本章的标题是点亮LED&#xff0c;虽然任务很简单&#xff0c;但是需要了解的单片机基础知识却很多&#xff0c;特别是对于初学者&#xff0c;刚开始要在头脑中建立一个单片机的概念&#xff0c;然后通过点亮一个LED小灯来增加初学者对单片机的兴趣和自信。2.1单片机的内部资源在…...

设备安装工程:工业与建筑系统高效运行的关键环节

一、什么是设备安装工程&#xff1f;设备安装工程是工业建设和建筑机电工程中的重要组成部分&#xff0c;主要指将各类机械设备、电气设备、生产设备以及自动化系统按照设计要求进行运输、定位、安装、调试并投入运行的全过程。设备安装不仅影响设备的运行效率&#xff0c;还直…...

别再写“负责xx开发”了,用数字让HR在6秒内看到你的“战力”

前言&#xff1a;你的简历&#xff0c;HR真的会看吗&#xff1f; 先来看一组残酷的数据&#xff1a;HR平均阅读一份简历的时间只有5.8秒&#xff0c;83%的淘汰发生在前10秒之内。这意味着什么&#xff1f;意味着你熬夜三天写出来的两页纸&#xff0c;在HR眼中只是一次“扫一眼”…...

在深圳宝安实验室做落球冲击试验

一、测试介绍 落球冲击测试是将规定质量的球从不同高度落下&#xff0c;或在规定高度下将不同质量的球落下&#xff0c;以测定胶接试样在承受落球冲击击下产生裂痕所需的能量的试验。仪器采用标准试验钢球&#xff0c;钢球电磁吸挂、自动释放&#xff0c;可有效地避免了人为因…...

微信公众号文章保存工具-支持图文

介绍&#xff1a; 这是本人因一时所需即兴写的小软件。功能很简单&#xff0c;根据WX公众号文章链接可以把文章的文字、图片下载到本地&#xff0c;可以保存为HTML网页格式、DOC文档格式&#xff0c;方便归档保存。 现在提供给朋友们使用&#xff0c;有这方面需要的朋友可以下…...

5分钟完成 RS6013A 上位机连接与第一个示例程序(含截图)

在雷达技术教学与科研中&#xff0c;FMCW&#xff08;调频连续波&#xff09;雷达因其结构简单、测距精度高、无距离盲区等优点&#xff0c;已成为毫米波雷达应用的主流方案。然而&#xff0c;许多初学者在面对雷达硬件时&#xff0c;往往被复杂的寄存器配置、数据协议和信号处…...

跨平台符号表生成规则详解:Windows/Linux/macOS/OHOS

本文详细介绍 C/C 项目在各平台的符号表生成策略&#xff0c;包括 MSVC PDB 生成、GCC/Clang DWARF 生成、以及 strip 操作的原子性保证。一、各平台符号格式对比平台编译器符号格式文件位置备注WindowsMSVCPDB (Program Database)与 DLL 分离无需 stripLinuxGCC/ClangDWARF嵌入…...

品牌关键词优化:如何用5步提升你的内容搜索排名?

随着生成式AI的兴起&#xff0c;GEO&#xff08;生成式引擎优化&#xff09;已成为企业提升品牌曝光和流量获取的重要手段。为了帮助大家更好地选择适合自己的GEO服务提供商&#xff0c;我们对市面上主流的GEO产品进行了深度测评。以下是本次参与测评的产品名单&#xff1a;沐廉…...

Matlab几何特征地图法实现智能车二维路径规划

Matlab几何特征地图法 单个机器人&#xff08;智能车&#xff09; 二维路径规划 静态环境全局路径规划 避障 有局部避障和路径冲突解决策略源程序仿真带注释 附操作视频在智能车的二维路径规划领域&#xff0c;尤其是在静态环境下的全局路径规划&#xff0c;Matlab 的几何特征地…...

JavaScript重定义this指向(apply、call、bind)

一、apply() 在JavaScript中&#xff0c;apply()是函数的原型方法&#xff08;Function.prototype.apply&#xff09;&#xff0c;用于调用一个函数&#xff0c;并显式指定该函数内部的this值&#xff0c;同时以数组&#xff08;或类数组对象&#xff09;的形式传入参数。基本语…...