JS继承实现方式梳理

避坑指南:Vue调用摄像头常见6大报错解决方案(navigator.mediaDevices全兼容方案) 本文深入剖析了在Vue应用中调用摄像头时常见的六大报错,如权限拒绝、设备未找到等,并提供了基于navigator.mediaDevices的全兼容解决方案。内容涵盖从HTTPS环境配置、浏览器兼容性处理到摄像头资源管理与高级错误处理,旨在帮助开发者构建稳定可靠的企业级摄像头应用。 阅读详情

ES5中定义类

在ES5里面定义类,就是写一个方法,这个方法就是该类的构造函数,用来初始化实例对象

/**
         * @description: 定义Person类
         * @param {*} name
         * @param {*} age
         * @return {*}
         */        
        function Person(name,age){
            //定义属性
            this.name=name;
            this.age=age;
            //定义方法
            this.show=function(){
                alert(this.name)
            }
        }
        window.onload=function(){
            //实例化一个Person对象,并调用该实例的方法
            var p=new Person("张三",20)
            p.show();
        }

原型

1、js中一切皆对象,方法也是对象。
2、__proto__和prototype([[Prototype]]就是_proto_):
(1)普通对象:例如:{name:‘ls’},普通对象身上只有__proto__属性,它默认指向Object类的原型对象
(2)实例化对象:实例化对象身上也是只有__proto__属性,它指向实例化它的类的原型对象
(3)方法对象:方法对象身上同时包含__proto__属性和prototype属性,其中__proto__指向一个方法ƒ () { [native code] },prototype属性指向该方法的原型对象
3、 在原型对象中包含一个构造函数和所有实例化对象的公用属性和方法
4、proto叫做隐式原型,prototype叫做显示原型。
(1)js中创建一个函数的时候,函数身上就包含一个prototype属性,它指向这个函数的原型对象,原型对象里边包含着一个构造函数,还包含着所有实例化对象公用的属性和方法。用来实现基于原型的继承与属性的共享。
(2)在实例化一个对象的时候,它身上就包含一个proto属性,它指向用来实例化它的函数的原型对象。构成原型链,同样用于实现基于原型的继承。

在这里插入图片描述

			//实例化一个Person对象
            var p=new Person("张三",20)

            console.log("打印实例化对象的prototype:")
            console.log(p.prototype)//undefine,实例化对象身上是没有prototype属性的,只有__proto__属性

            console.log("打印实例化对象的__proto__:")
            console.log(p.__proto__)//ok,实例化对象的__proto__原型对象和该对象的构造函数的原型对象是一样的

            console.log("打印方法对象的prototype:")
            console.log(Person.prototype)//ok,方法的prototype原型对象和它所实例化的对象的__proto__原型对象是一样的

            console.log("打印方法对象的__proto__:")
            console.log(Person.__proto__)//ok

打印结果:
在这里插入图片描述

//验证实例化对象的__proto__和实例化该对象的类的原型对象
console.log(p.__proto__===Person.prototype)//true

原型链+对象冒充实现继承

使用组合模式的原因:如果只用原型链模式的话,虽然子类能够继承父类的构造函数里的的属性和方法,也能继承父类原型链上的属性和方法,但是,在实例化子类对象的时候无法给父类构造函数传参。如果只使用对象冒充的话,子类只能继承父类构造函数里面的属性和方法,而无法继承父类原型链上的属性和方法。

		/**
         * @description: 定义Person类
         * @param {*} name
         * @param {*} age
         * @return {*}
         */        
        function Person(name,age){
            //定义属性
            this.name=name;
            this.age=age;
            //定义方法
            this.show=function(){
                console.log(this.name)
            }
        }
        Person.prototype.showAge=function(){
            console.log(this.age)
        }
        /**
         * @description: 定义Femeal类
         * @param {*}
         * @return {*}
         */        
        function Femeal(name,age,ismarried){
            Person.call(this,name,age);//对象冒充实现继承父类私有属性和方法
            this.ismarried=ismarried;
        }
        Femeal.prototype=new Person();//实现继承父类原型上的属性和方法
        window.onload=function(){
            var f=new Femeal('张三',20,false);
            console.log(f.name)//张三
            f.showAge()//20
            console.log(f.ismarried)//false
        }
拆开它的“身体”,看懂割草机器人的五层系统架构 这篇文章深入解析了智能割草机器人的五层系统架构。机械层采用铝合金一体式车架和独立悬挂刀盘系统;电子层配备双处理器和多种传感器;固件层实现毫秒级安全响应;算法层融合多种定位技术实现厘米级精度;云服务层提供远程管理和AI优化。这套系统通过精密协同实现了智能割草的全流程闭环,展现了从机械结构到云端智能的完整技术栈,为户外智能设备设立了新的技术标杆。 阅读详情

相关推荐

【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建

本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。

weixin_30694389的博客 413

【数据结构】双栈实现队列&队列实现栈思路和实现

引言 一、双栈实现队列 我的题解 /** * @Description: 使用两个栈 实现队列 —— 进和出 * @param {*} * @return {*} * @notes: 关键:s1设置为队尾, s2设置为对头 * ① 出栈的时候如果为空,则 s1入s2; 再出队。 * ② 入栈则放到s1里面。 * ③ 如果 s1和s2同时为空——出栈的时候 则为空队列 返回-1。 */ class CQue

少年初心的博客 1034

大模型学习笔记四:LangChain开发框架解析

1、模型I/O封装LLMs:大语言模型Chat Models:一般基于LLMs,但按对话结构重新封装PromptTemple:提示词模板OutputParser:解析输出2、数据连接封装Document Loaders:各种格式文件的加载器Document transformers:对文档的常用操作,如:split,filter,translate,extract metadata,etcTextr Embedding Models:文本向量化表示,用于检索等操作。

谢白羽 4282

JavaScript常用注释规范

JavaScript注释规范

weixin_44799428的博客 1720

如何在TRAE(国际版)中搭建ESP-IDF环境以及怎么使用ESP-IDF插件编译烧录到ESP32s3中

点击进入,再点击ESPRESSIF中的EXPRESS,这里会下载ESP-IDF所需要的全部工具和包等等。首先我们从终端中进入项目所在的目录中,我的项目在E盘下的jikecode\esp32s3-client中,我就进入这个目录下。,因为我的项目是针对ESP32-S3进行开发的,所以这里的芯片型号是esp32s3,大家根据各自芯片的型号来输入。执行了这个命令后,ESP-IDF会自动配置与ESP-S3相关的编译选项,生成对应芯片的配置文件。进入第一个ESP-IDF插件,进行安装,注意安装的是。

一个爱折腾技术的普通人,分享踩过的坑、学到的干货。 1502

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6090

SpringMVC——6.常用注解

1.获取原生ServletAPI 原生的Servelt通过HttpServletRequest为后台发送数据,通过HttpServletResponse获取处理后的数据 代码实践 1)网页部分 网页发起目标路径访问请求 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html>...

XHY的博客 197

使用Transformer实现自动调制识别(RML2018)

image_size = 1024 # resize重置输入大小patch_size = 16 # 从输入图片中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x})

QAQIknow的博客 1320

前端文件注释和方法注释总结

文件注释: 文件头部增加文件注释,用于描述文件的基本信息。便于阅读代码时,快速的理解该文件的功能。 主要包含以下字段: @description 文件描述 @author 作者 @date 创建时间 @lastModifiedBy 最新的变更人 @lastModifiedTime 最新的更新时间 /** * @description 文件干啥用的 * @author Morning * @date 2022-03-25 16:16:52 * @lastModifiedBy Morni

棠樾的博客 1592

2026最新华为OD机试新系统机考真题- 真题题库目录|全覆盖题库 + 逐点算法考点详解

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 2490

如何免费快速的部署一个自用免VIP的自动追剧工具!NAS新玩法!豆瓣与迅雷结合,轻松实现自动下载电影自动追剧功能(支持Windows,群晖nas,飞牛nas,软路由,服务器等Docker快速部署)

追剧党狂喜!豆瓣追剧神器,自动添加云盘,自动下载,微信通知,一键搞定!

XiaoqiangClub的博客 4582

Javascript继承,再谈

说到Javascript的继承,相信只要是前端开发者都有所了解或应用,因为这是太基础的知识了。但不知各位有没有深入去理解其中的玄机与奥秘。今本人不才,但也想用自己的理解来说一说这其中的玄机和奥秘。 一、类继承的发展吏 function实现的继承 function的继承是完全模仿了OOP的编程思想。实现的是类的继承 object.create实现的继承 ...

weixin_30396699的博客 69

GStreamer Plugin之Gst-nvdewarper

支持三种投影类型 NVDS_META_SURFACE_FISH_PUSHBROOM, NVDS_META_SURFACE_FISH_VERTCYL 和NVDS_META_SURFACE_PERSPECTIVE_PERSPECTIVE。关于每个平面的NvDewarperSurfaceMeta参数(projection_type, surface_index, and source_id)以及内存中有效的矫正平面(num_filled_surfaces)包含RGBA格式的一帧的缓存。矫正后的RGBA格式。

pvmsmfchcs的博客 366

JavaScript 面向对象编程核心知识点总结

继承是面向对象编程的核心概念,允许子类复用父类的属性和方法,并在此基础上扩展或重写。静态成员(属性和方法)属于类本身,而不是类的实例。静态成员通过类名直接访问,实例无法访问。子类重新定义父类中已存在的方法,以提供特定实现。

2301_81134849的博客 338

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

前端面试题(二)

【代码】前端面试题(二)

qq_65077739的博客 716

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2022-03-15 [总结]JS继承的常见几种方式和优缺点:原型链继承,构造函数继承,组合继承,原型式继承,寄生式继承,寄生组合式继承,class继承

0.object.create 分类一:不使用Object.create的继承 1.原型链继承 原理:给原型对象增加一层指向 优缺点 格式和示例 2.构造函数继承 原理:使用bind改变某个功能的this指向从而实现继承 优缺点 格式和示例 3.组合继承(原型链+构造函数) 原型链继承和构造函数继承的缺点 组合继承的原理改变this指向+原型对象 优缺点 语法和示例 分类二:使用Object.create的继承 4.原型式继承 定义 优缺点 语法和示例:原型式继承是浅拷贝 使用Object.create进行

GAARA 452

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

继承的几种方式

寄生继承是通过创建一个新对象并将其返回,从而将父类的属性和方法“复制”到子类对象中。在这种模式下,子类并不直接继承父类的属性和方法,而是通过某种形式将请求委托给父类来实现行为复用。虽然它不是传统意义上的继承,但它提供了一种代码复用的方式,可以在多个对象之间共享功能。通过 Object.setPrototypeOf() 方法动态设置对象的原型,从而实现继承。结合了原型链继承和构造函数继承,既能继承父类的实例属性,又能继承父类的方法。通过将子类的原型指向父类的实例,来实现继承。

睡不着的可乐博客 907

JavaScript 继承的七种姿势:从“原型链”到“class”的进化史

昨天我们聊了原型链,知道了JS对象之间是怎么“攀亲戚”的。今天咱们来聊聊继承——也就是怎么让一个对象“认祖归宗”,继承另一个对象的属性和方法。从最原始的手动操作,到ES6优雅的class语法,这中间有好几种姿势,每种都有自己的脾气。今天一次性给你盘清楚。

weixin_47352287的博客 442

JS原型、原型链、构造函数、实例与继承

https://cloud.tencent.com/developer/article/1408283 https://cloud.tencent.com/developer/article/1195938 https://cloud.tencent.com/developer/article/1359936 https://cloud.tencent.com/developer/artic...

weixin_33695082的博客 734

【JS】面向对象———创建对象与继承

JS中关于面向对象这一章,十分重要,但看起来可能觉得比较乱,这里进一步进行梳理与总结。希望理清关系。

zhaohb2016的博客 396

3、JavaScript 继承详解

JavaScript继承基于原型链机制,通过__proto__属性实现属性查找。主要实现方式包括:原型链继承(简单但有共享问题)、构造函数继承(可传参但无法复用方法)、组合继承(常用但有重复调用问题)、寄生组合继承(最优方案)以及ES6 Class(语法糖)。面试回答应包含原理认知、演进历程、最佳实践和对比说明。现代开发推荐使用ES6 Class,但深入理解底层原理(如寄生组合继承)是核心竞争力。关键要掌握原型链机制、各种继承方式的优缺点,以及ES6 Class与ES5继承的区别。

2302_81102841的博客 433

JS红宝书笔记 8.3 继承

读完JS红宝书8.3节后记的笔记,包含JS中各种继承方法

qq_47804149的博客 921

JS 原型与原型链深度解析 —— 从本质理解继承的实现

本文将从本质拆解原型与原型链的底层逻辑,讲解原型的核心特性、原型链的查找规则,以及基于原型的继承实现方式,解决开发中原型相关的各类问题。

阿雷编程实战 955

JS手撕:对象创建、继承全解析

本文系统讲解JavaScript中对象创建与继承的6种方法。对象字面量{}是最简单常用的方式;构造函数适合批量创建但存在内存浪费;原型模式通过共享方法优化性能;Object.create()实现灵活原型继承;ES6的class语法是现代化写法;工厂函数适合封装创建逻辑。文章结合代码示例分析各方法特点,帮助开发者根据场景选择最优方案,兼顾开发效率与性能优化。

2401_86788218的博客 559

js高级复习

本文系统梳理了JavaScript核心知识点,包括:1)原型与原型链机制,详解构造函数、原型对象及继承原理;2)作用域、闭包及其应用场景;3)this指向规则及修改方法;4)6种继承方式及ES6 class实现;5)事件循环与异步编程演进;6)深浅拷贝实现;7)防抖节流原理;8)垃圾回收机制;9)ES6+新特性;10)数组高阶函数;11)跨域解决方案;12)回流与重绘区别。内容涵盖JS底层原理、常用设计模式及性能优化要点,适合面试复习及知识体系构建。

2401_87845453的博客 554

JS相关知识

这里开始陆续介绍JS的相关学习笔记先写这么多,后面有时间继续更新哈。

qq_51875792的博客 384
上一篇: iReport报错org.springframework.web.util.NestedServletException: Handler dispatch failed;
下一篇: Typescript学习-不能光干看文档,比较重要的地方做下笔记还是有必要的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值