js原型

原型链的根源

当一个类定义时,它就有原型对象(prototype object),原型对象必须有多个内部特定属性来表示类的特性。

prototype的作用——原型链的实现

每一个类又有一个prototype属性标识类的原型对象,该属性是静态属性,它有两个作用,一个是实现继承,一个是分享属性。所以实现继承和分享属性是原型链的组成部分。

1、实现继承

使用prototype静态属性来实现继承是通过改变[Prototype]的值来实现的([Prototype]表示该类的父类的原型对象,注意是父类的原型对象,一般使用_proto_来访问)。

例:

function Person(){}
function Child(){}

它们分别有下面的内部属性

复制代码
{
  Prototype:Object原型对象
  Class:Person  [Class]表示类名    
}
{
  Prototype:Object原型对象
  Class:Child
}
复制代码

假如Person和Child是继承关系,那么就可以用下面的代码来实现:

Child.prototype=new Person();

因为Person实例也隐式包含了Person类的内部属性[Prototype],因此当执行这个赋值关系时,javascript解释引擎可以获取Person实例的[Prototype]属性值,然后改变Child的[Prototype]属性值,于是存在下列关系:

{
  Prototype:Person
  Class:Child
}

2、分享属性

在创建类的实例时,该实例隐式包含有对自身原型对象的引用,因此实例中也包含有[Prototype]属性。

一个类的所有属性都定义在原型对象上面,当类的实例访问一个属性时,javascript解释引擎就会去原型对象上查找属性,然后执行。

例:

复制代码
function GrandFather(){
   this.g1="";
   this.g2="";
}
function Father(){
   this.p3="";
   this.p4="";
}
function Child(){
   this.C5="";
}

Father.prototype=new GrandFather();
Child.prototype=new Father();
复制代码

那么在实例化GrandFather时,这个实例隐式包含有自身内部属性[Prototype]的值,该值包含有GrandFather类属性的描述;同样在实例化Father时,这个实例隐式包含有自身内部属性[Prototype]的值,该值包含有Father类属性的描述;在实例化Child时,该实例包含有自身内部属性[Prototype]的值,该值包含有Child类属性的描述。

如果Child的实例调用一个属性时,那么就会按照下面的步骤:

(1)首先查找Child是否存在指定属性,如果存在就执行,如果不存在就查找该实例包含的自身内部属性[Prototype]的值,查到原型对象是Father实例,执行下一步。

(2)查到Father是否存在指定属性,如果存在,就执行该属性,如果不存在,就查找该实例包含的内部属性[Prototype]的值,查到原型对象是GrandFather实例,执行下一步。

(3)查找GrandFather是否存在指定属性,如果存在就执行,如果不存在,就查找该实例包含的内部属性[Prototype]的值,查到原型对象是Object实例,执行下一步。

(4)查找Object是否存在该属性,如果存在就执行,如果不存在,就会返回undefined,因为Object就是原型链的尽头。

因为方法就是类型为function的属性,因此,这一过程,同样适用于方法。

总结:

每一个类都有一个prototype属性,这是一个静态属性,该属性包含了标识该类的一个对象,这个对象称为原型对象。

在原型对象上定义了一些属性用于描述该类,其中就包含了该类的基类信息,通过信息,javascript解释引擎就可以知道该类的基类,同时基类也有相同的构成,因此javascript就可以知道基类的基类,这就建立了一个链条,因为描述基类信息的内部属性是prototype,所以该链条叫原型链。

原型链的尽头是Object的原型对象,该对象的原型对象[Prototype]的值是null。

动物目标检测数据集 一、基础信息 数据集名称:动物目标检测数据集 图片数量: - 训练集:9,134张图片 - 验证集:1,529张图片 - 测试集:1,519张图片 总计:12,182张图片 分类类别: Bear(熊)、Cat(猫)、Cattle(牛)、Chicken(鸡)、Deer(鹿)、Dog(狗)、Elephant(大象)、Horse(马)、Monkey(猴子)、Sheep(绵羊) 标注格式: YOLO格式,包含归一化坐标的边界框和数字编码类别标签,支持目标检测模型开发。 数据特性: 涵盖俯拍视角、地面视角等多角度动物影像,适用于复杂环境下的动物识别需求。 二、适用场景 农业智能监测: 支持畜牧管理系统开发,自动识别牲畜种类并统计数量,提升养殖场管理效率。 野生动物保护: 应用于自然保护区监控系统,实时检测特定动物物种,辅助生态研究和盗猎预警。 智能养殖设备: 为自动饲喂系统、健康监测设备等提供视觉识别能力,实现精准个体识别。 教育研究工具: 适用于动物行为学研究和计算机视觉教学,提供标准化的多物种检测数据集。 遥感图像分析: 支持航拍图像中的动物种群分布分析,适用于生态调查和栖息地研究。 三、数据集优势 多物种覆盖: 包含10类常见经济动物和野生动物,覆盖陆生哺乳动物与家禽类别,满足跨场景需求。 高密度标注: 支持单图多目标检测,部分样本包含重叠目标标注,模拟真实场景下的复杂检测需求。 数据平衡性: 经分层抽样保证各类别均衡分布,避免模型训练时的类别偏差问题。 工业级适用性: 标注数据兼容YOLO系列模型框架,支持快速迁移学习和生产环境部署。 场景多样性: 包含白天/夜间、近距离/远距离、单体/群体等多种拍摄条件,增强模型鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值