一文教你看懂原型!!!

本文深入探讨JavaScript中__proto__和prototype的含义及其关系,解释构造函数、原型和实例间如何相互作用,以及如何检测实例与原型的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈到原型,我们都知道最重要的两个属性就是__proto__和prototype,那么他们到底有什么关系又到底是什么呢,这一篇看完相信你就会有一些理解了。

1 对象的__proto__是什么

js中万物皆对象,每个数据都会有一个__proto__的属性,这个属性叫隐式原型。
一个对象(obj)的 隐式原型(proto) 指向构造该对象(obj)的 构造函数(Object())的原型属性(Object.prototype)
这样做的原因是为了能够保证实例(obj)能够访问到在构造函数(Object())的原型属性(Object.prototype)中定义的属性和方法。



2 函数对象的prototype是什么

函数(Function)是一个特殊的对象,除了和其他对象一样有上述__proto__属性之外,还有自己特有的属性——原型(prototype),这个属性被描述成指针。
他指向一个对象类型的数据,这个对象的用途就是包含所有 将来使用该函数 构造出来的可被共享的属性和方法(我们把这个对象叫做原型对象)。

原型对象内也有一个属性,叫做constructor,这个属性包含了一个指针,指回原函数。
类似于arguments.callee,但是arguments只能在函数内部获得,而函数原型对象内的constructor属性,可以在任何能访问到这个函数的位置使用。


3 构造函数、原型、实例之间的关系

1>构造函数 Fn身上有属性prototype为原型对象,原型对象内有constructor属性指向当前prototype所在的构造函数Fn
2>在new执行构造函数Fn时,创造了一个实例对象f,实例对象f的__proto__ 指向构造函数Fn的 原型prototype
3>因为实例对象f的__proto__ 指向构造函数Fn的 原型prototype,所以实例对象f可以间接访问到Fn原型prototype的方法

在这里插入图片描述

4 实例和原型关系检测

isPrototypeOf()函数,用于检测两个对象之间似乎否存在原型关系,使用方法如下:

Fn.prototype.isPrototypeOf(f)     
// 查看 Fn 的 prototype 对象,是否是 f 原型

instanceof运算符,用于检测某实例是否来自于某构造函数,使用方法如下:

 console.log(f instanceof Fn)  
// 查看 f 对象是否是构造函数 Fn 的实例
 console.log(f instanceof Object)  
// 查看 f 对象是否是构造函数 Fn 的实例

两种使用,如果是返回ture,如果不是返回false

注意:instanceof运算符右侧为构造函数,并且js中所有原型都来自Object构造函数


5 js解析器访问属性顺序:

当访问实例 f的属性或方法时,会先在 当前实例对象 f中查找,如果没有,则沿着__proto__继续向上寻找,如果找到最顶头的Object还是找不到,则会抛出undefined。如果在实例中找到,或某层原型中找到,就会读取并使用,同时停止向上找寻
由此可见,解析器的解析顺序遵循就近原则,如果在最近的位置发现属性存在,便不会继续向上找寻。

### 大语言模型(LLM)的基本概念和原理 大语言模型(Large Language Model, LLM)是一种基于深度学习的自然语言处理技术,其核心目标是通过训练大量的文本数据来生成与人类语言相似的文本[^2]。LLM 的设计旨在模仿人类的语言能力,能够完成从文本生成、翻译、摘要提取到对话理解等多种任务。 #### 1. 大语言模型的特点 大语言模型的主要特点包括参数规模巨大、训练数据量庞大以及强大的泛化能力。这些模型通常包含数十亿甚至上万亿个参数,使其能够捕捉复杂的语言模式并适应多种应用场景[^3]。此外,LLM 具备上下文理解能力,能够在特定语境中生成连贯且有意义的回复。 #### 2. 大语言模型的基本组成 LLM 的基本组成包括以下几个部分: - **编码器(Encoder)**:负责将输入文本转换为向量表示,以便模型能够理解语言中的语义信息。 - **解码器(Decoder)**:根据编码器生成的向量表示,生成相应的输出文本。 - **注意力机制(Attention Mechanism)**:用于帮助模型关注输入文本中的重要部分,从而提高生成文本的质量和相关性[^2]。 #### 3. 大语言模型的工作流程 大语言模型的工作流程可以概括为以下阶段: - **预训练(Pre-training)**:使用大规模无标注文本数据进行训练,使模型学习通用的语言知识。 - **微调(Fine-tuning)**:在特定任务上使用标注数据对预训练模型进行调整,以适应具体的应用场景。 - **推理(Inference)**:利用训练好的模型生成符合要求的输出文本[^3]。 #### 4. 大语言模型的应用 大语言模型的应用范围非常广泛,涵盖了多个领域和技术方向。例如: - **文本生成**:自动生成文章、故事、诗歌等。 - **机器翻译**:实现高质量的多语言互译。 - **对话系统**:构建智能客服、虚拟助手等交互式应用。 - **代码生成**:辅助程序员编写代码或优化现有代码。 - **内容创作**:生成营销文案、新闻报道等专业内容[^1]。 ```python # 示例:使用 Hugging Face Transformers 库加载预训练的大语言模型 from transformers import pipeline # 初始化文本生成管道 text_generator = pipeline("text-generation", model="gpt2") # 生成一段文本 output = text_generator("Once upon a time", max_length=50) print(output) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值