JS 继承

本文深入探讨了JavaScript中对象的创建方法,包括字面量、系统构造函数和自定义构造函数,以及实例对象与构造函数的关系。详细解析了原型链的概念,如何通过原型链实现属性查找,以及对象的下划线原型(__proto__)与构造函数原型(prototype)的关联。此外,还介绍了四种继承方式:原型继承、借用构造函数、组合继承和拷贝继承,每种方式的特点和局限性。

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

一.对象

1.创建对象的三种方式:

  1. 字面量方式
  2. 调用系统的构造函数
  3. 自定义构造函数

2.实例对象和构造函数

原型链

            是实例对象和原型对象之间的关系,通过原型(__proto__)来联系的。

原型的指向是可以发生改变的。如果原型指向发生改变,应该在改变之后添加原型方法;

构造函数的原型对象(prototype)指向如果发生改变,实例对象的原型(__proto__)指向也会发生改变。

1.实例对象的原型__proto__和构造函数的原型prototype的指向是相同的

2.实例对象中的__proto__原型指向---->构造函数的原型prototype对象

3.实例对象中的__proto__是原型,浏览器使用的;构造函数中的prototype也是原型,程序员使用的。

实例对象的__proto__原型 ---->构造函数的prototype原型里面的__proto__------>Object的prototype中的__proto__(null);

具体:

div.__proto__---->HTMLDivElement.prototype的__proto__---->Element.prototype的__proto__--->Node.prototype的__proto__---->EventTarget.prototyp的__proto__---->Object.prototype没有__proto__,所以Object.prototype的__proto__为null。

 

Js中,对象没有属性,只要对象.属性,则对象就有了该属性但是此属性并没有复制,会返回undefined而不会报错。

 

实例对象访问属性先去实例对象中找,找不到再去原型对象中找;

实例对象无法改变原型对象中的属性值,要想改变原型对象中的属性值,直接通过原型对象.属性=值来改变。

只要是对象就会有下划线原型(__proto__),下划线原型总是指向构造函数的原型对象。

原型作用

1.数据共享,节省内存空间;

2.实现继承(父类与子类级别之间的关系)。

 

二.继承

定义:是类(class)与类之间的关系(js中没有类的概念,因此通过构造函数来模拟类,通过原型实现继承。)

目的:为了实现数据共享

方法:通过改变原型的指向

1.原型继承 

 Student.prototype=new Person( 属性,属性,属性…..);

 缺陷:属性在初始化时已经固定,如果是多个对象实例化那么每个实例对象的属性的值在初始化的时候都是一定的。

2.借用构造函数:

构造函数名字.call(当前对象,属性,属性...)来解决属性继承及值不重复问题;

Person.call(this,name,age,sex,weight);

缺陷:方法不可以继承。

3.组合继承:

原型继承+借用构造函数继承

解决了属性和方法的继承问题。

4.拷贝继承:(分为深浅拷贝 见https://blog.youkuaiyun.com/weixin_41082623/article/details/88084831

把一个对象中的属性或者方法直接复制到另一个对象中

var obj2={};

    for(var key in Person.prototype){

        obj2[key]=Person.prototype[key];

    }

三.函数

函数的调用方式:

1.普通函数:直接调用

2.构造函数:通过new创建对象来调用

3.对象的方法:先通过new创建对象在用对象.方法来调用

注意:

函数是对象,对象不一定是函数;

所有的函数都是由Function的构造函数创建出来的实例对象。

资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值