js原型 prototype

RK3588开发板USB调试避坑指南:adb设备识别与文件传输实战 本文提供了RK3588开发板USB调试的全面实战指南,重点解决adb设备识别与文件传输中的常见问题。文章详细讲解了从驱动安装、udev规则配置到adb连接故障排查的全流程,并对比了adb push/pull、tar管道压缩及网络传输等多种文件传输方法的性能与适用场景,帮助开发者构建稳定高效的调试环境。 阅读详情

 js原型是Js中非常重要的概念,每个函数(在Js里面函数也是对象)都有一个叫prototype(即原型)的属性,不过在一般情况下它的值都是null,但是它有一项非常重要的功能就是所有实例都会共享它里面的属性和方法(这就是Js里面实现继承的基础)

  原型与原型链 体现OOP思想.

原型使用方式1:

 

Js代码   收藏代码
  1.  var Calculator = function (decimalDigits, tax) {                                           
  2.        this.decimalDigits = decimalDigits;      
  3.         this.tax = tax;        
  4.   };  
  5.   
  6.  Calculator.prototype = {           
  7.    add: function (x, y) {     
  8.              return x + y;            
  9.   },         
  10.      subtract: function (x, y) {     
  11.              return x - y;             
  12.  }        };        
  13.   
  14. //测试  
  15. var obj=new Calculator();  
  16.  alert(obj.add(1, 3));  

 Calculator对象的prototype属性赋值对象字面量来设定Calculator对象的原型。
 

 原型使用方式2:

赋值原型prototype的时候使用function立即执行的表达式来赋值。

Js代码   收藏代码
  1. Calculator.prototype = function () {   
  2.   
  3. } ();  

 

 封装私有的function,通过return的形式暴露出简单的使用名称,以达到public/private的效果 。

Js代码   收藏代码
  1. Calculator.prototype = function () {      
  2.         add = function (x, y) {       
  3.            return x + y;             
  4.  },             
  5.  subtract = function (x, y) {     
  6.              return x - y;           
  7.    }            
  8.   return {            
  9.       add: add,        
  10.        subtract: subtract    
  11.           }        } ();        
  12.   
  13. //测试  
  14. var obj=new Calculator();  
  15. alert(obj.add(11,3));  

 

分步声明:

Js代码   收藏代码
  1. var BaseCalculator = function () {    
  2.   //为每个实例都声明一个小数位数    
  3.   this.decimalDigits = 2;  
  4. };       
  5.    //使用原型给BaseCalculator扩展2个对象方法  
  6. BaseCalculator.prototype.add = function (x, y) {    
  7.   return x + y;  
  8. };  
  9. BaseCalculator.prototype.subtract = function (x, y) {   
  10.    return x - y;  
  11. };  

 

首先,声明了一个BaseCalculator对象,构造函数里会初始化一个小数位数的属性decimalDigits,然后通过原型属性设置2个function,分别是add(x,y)和subtract(x,y),当然你也可以使用前面提到的2种方式的任何一种,我们的主要目的是看如何将BaseCalculator对象设置到真正的Calculator的原型上。

 

Js代码   收藏代码
  1. var BaseCalculator = function() {     
  2.  this.decimalDigits = 2;  
  3. };  
  4. BaseCalculator.prototype = {    
  5.   add: function(x, y) {    
  6.       return x + y;      
  7. },    subtract: function(x, y) {   
  8.        return x - y;     
  9.  }};  

 

Js代码   收藏代码
  1. var Calculator = function () {    
  2.   //为每个实例都声明一个税收数字    
  3.   this.tax = 5;  
  4. };        
  5.   Calculator.prototype = new BaseCalculator();  

 

我们可以看到Calculator的原型是指向到BaseCalculator的一个实例上,目的是让Calculator集成它的add(x,y)和subtract(x,y)这2个function,还有一点要说的是,由于它的原型是BaseCalculator的一个实例,所以不管你创建多少个Calculator对象实例,他们的原型指向的都是同一个实例。

Js代码   收藏代码
  1. var calc = new Calculator();  
  2. alert(calc.add(1, 1));  
  3. //BaseCalculator 里声明的decimalDigits属性,在 Calculator里是可以访问到的alert(calc.decimalDigits);   

 

上面的代码,运行以后,我们可以看到因为Calculator的原型是指向BaseCalculator的实例上的,所以可以访问他的decimalDigits属性值,那如果我不想让Calculator访问BaseCalculator的构造函数里声明的属性值,这样处理

Js代码   收藏代码
  1. var Calculator = function () {   
  2.    this.tax= 5;  
  3. };  
  4. Calculator.prototype = BaseCalculator.prototype;  

 

通过将BaseCalculator的原型赋给Calculator的原型,这样你在Calculator的实例上就访问不到那个decimalDigits值了,如果你访问如下代码,那将会提升出错。

Js代码   收藏代码
  1. var calc = new Calculator();  
  2. alert(calc.add(1, 1));  
  3. alert(calc.decimalDigits);  

 

重写原型: 

 在使用第三方JS类库的时候,往往有时候他们定义的原型方法是不能满足我们的需要,但是又离不开这个类库,所以这时候我们就需要重写他们的原型中的一个或者多个属性或function,我们可以通过继续声明的同样的add代码的形式来达到覆盖重写前面的add功能。

Js代码   收藏代码
  1. //覆盖前面Calculator的add() function   
  2. Calculator.prototype.add = function (x, y) {    
  3.   return x + y + this.tax;  
  4. };  
  5. var calc = new Calculator();  
  6. alert(calc.add(1, 1));  
如何在RK3588上面使用摄像头实时实现物体识别? 阅读详情

相关推荐

RK3588使用笔记:debian/ubuntu/麒麟系统下基础功能配置(不定期更新)

用于记录使用RK3588这个平台在debian/ubuntu/麒麟系统下的一些功能配置,RK3588只是一个芯片,linux是底层系统,debian/ubuntu/麒麟是桌面文件系统,系统可以运行在无数的芯片上,也都大同小异,本编文章主要记录debian/ubuntu/麒麟是桌面文件系统环境的一些常用的基础功能配置,与纯linux系统有不同,如果是专用功能还会写新的笔记,也是记录一下自己的使用心得,也把经验分享给大家,希望国产的路上越来越顺RK3588(linux5.10.66+debian/ubuntu/

kbq的博客 2790

C编程小问题 —— “missing function-prototype“

这个问题是根本原因是编译的代码中存在未声明函数,即“缺少函数原型”错误。多文件编程中比较多,导致的原因也很多,下面总结几个用于大家排查自己报错代码。 1、“头文件卫士”宏定义的失误。 有时候为了方便,一个功能函数文件*.c、*.h直接复制几份加以修改,然而这样稍不留神就会导致头文件里的“#ifndef XXXX”忘记修改,导致两份头文件的选择编译宏相同,原本用来防止重复编译的头文件卫士现在直接导致第二份代码的头文件无法被正常预处理插入代码中。 宏名较长时由于看起来比较相...

qq_42093353的博客 6万+

RK3588上部署yoloV5

电脑win10 装的 vmware 16pro 操作系统ubuntu20.04开发板 rk3588 一根 usb-typeC的数据线 用来PC与开发板通信在ROCKCHIP芯片上的EVB板子上使用RKNN-Toolkit2 和 RKNPU工具 将onnx模型转化为rknn模型 并进行板端推理。

m0_51887082的博客 2296

MDK: error c206:missing function-prototype

在编译的时候一直提醒error c206:“UART_Txd” missing function-prototype。 翻译:错误c206:函数缺少原型。 分析认为: 1、函数在调用的时候没有申明,导致出错。 2、包含该函数的头文件不在调用该函数的文件中。 3、函数书写有误。 结局方案: 1、在main函数前申明该函数。 2、检查是否包含"XXX.h"。 3、检查函数的拼写。申明的函数与调用的函数不一致,也会该类型报错。 我就死在这里了,我函数的原型是"UART_TXD"。😭😭😭😭😭

love_fang11的博客 1万+

Ubuntu下RK3588设备烧录权限修复:从udev规则到upgrade_tool成功运行

本文详细介绍了在Ubuntu系统下修复RK3588设备烧录权限问题的完整解决方案,重点讲解了如何通过配置udev规则解决upgrade_tool运行时出现的'Creating Comm Object failed!'错误。文章从问题排查、udev规则创建到实际烧录验证,提供了逐步指导,并分享了自动化脚本等实用技巧,帮助开发者高效完成RK3588固件烧录。

weixin_29161785的博客 252

RK3588开发板实战:5步搞定Ubuntu 24.04根文件系统移植(附WiFi驱动避坑指南)

本文详细介绍了在讯为RK3588开发板上移植Ubuntu 24.04根文件系统的5个关键步骤,包括环境准备、基础系统构建、驱动移植及WiFi配置等实用技巧。特别针对WiFi驱动问题提供了避坑指南,帮助开发者快速完成系统移植并优化性能。

php55的博客 1075

出现missing function-prototype警告、requires ANSI-style prototype报错

出现missing function-prototype警告、requires ANSI-style prototype报错的解决方案

打工人的日常博客 7719

BUG调试案例四:RK3588+RTL8111HS无法识别问题案例

RK3588 作为一款高性能 SoC,集成了丰富的 PCIe 接口资源,可用于连接多种高速外设,具备强大的扩展能力。然而,在实际开发板设计与调试过程中,我们也遇到过一些 PCIe 设备无法识别 的问题。这些问题看似偶发,实则背后涉及到电源时序、系统配置、硬件设计等多个环节。本文将结合真实案例,从多个维度剖析可能的成因,并总结经验教训,帮助大家在今后的项目中少走弯路、快速定位问题。内容分为以下几个部分,建议按顺序阅读:

案例文章,高速信号 1154

KEIL编程报警告warning c206:missing function-prototype

报警告warning c206:missing function-prototype,但是不影响编译。

m0_63950676的博客 10万+

立创EDA实战:基于NE555的夜间氛围呼吸灯电路设计与模式切换

本文详细介绍了使用立创EDA设计基于NE555芯片的夜间氛围呼吸灯电路。项目核心是利用NE555产生PWM信号,并通过RC充放电电路实现LED亮度的缓慢周期性变化,形成呼吸效果。文章手把手教学,涵盖从电路原理分析、元件参数计算,到在立创EDA中进行原理图绘制、PCB布局布线,直至焊接调试的完整硬件设计流程,是电子爱好者入门实战的经典项目。

weixin_42153793的博客 124

【飞控】UAV Toolbox Support Package for PX4 Autopilots安装与配置

安装配置UAV Toolbox Support Package for PX4 Autopilots硬件安装包

m0_58373406的博客 1613

Keil编译时出现missing function-prototype警告以及requires ANSI-style prototype错误的问题

已经将Delay.c和Delay.h从工程和文件夹里面都删掉了,还是出现同样的问题。没有拼写错误,都是之前的文件复制过来的,也没有报别的拼写方面的错误。重建工程,重新复制添加.c和.h文件:还是出现同样的问题。重新新建工程,新建文件,然后复制粘贴代码,这下对了。解决办法三:检查函数声明是否在主文件之前。解决办法二:检查是否有拼写错误。运行之后仍然出现该问题。重启Keil,没有解决。

qq_45151652的博客 6433

LabVIEW Modbus TCP通信避坑指南:解决连接中断、服务器异常与自动重连问题

本文详细解析了LabVIEW环境下Modbus TCP通信的常见问题,包括连接中断、服务器异常等,并提供了自动重连机制的实现方案。通过优化错误处理、超时参数和资源管理,帮助开发者构建更稳定的工业级Modbus TCP客户端,显著提升通信可靠性。

weixin_42525211的博客 423

rk3588 及系统安装 ubuntu

rk3588 及系统安装 ubuntu

xie__jin__cheng的博客 1万+

大模型时代的具身智能系列专题(二)

自由形式语言指令 L 指定了一个操作问题,例如“打开最顶部的抽屉”。然而,根据 L 生成机器人轨迹是很困难的,因为 L 可能具有任意长度,或者是不明确的(例如,需要上下文语义)。相反,我们专注于问题的各个阶段(子任务)l_i,它们明确地指定了一个操作任务 (例如,“抓住抽屉把手”,“打开抽屉”),其中被分解的子阶段(子任务)L→l1l2lnL→l1​l2​...ln​由高级规划器(例如,一个LLM或一个基于搜索的规划器)给出。

achao的专栏 2171

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4731

RK3588使用笔记:系统联网配置

话不多说,这里会介绍不同系统多种上网方式,有的是通过USB WIFI模块连接wifi信号进行网络通信,有的是通过调试电脑的网络共享,为什么要联网呢,就是为了在线更新驱动,因为离线安装会有很多依赖的问题,一环套一环,很难实现驱动的安装,尤其是复杂需求的工作环境,如用到python,或者复杂一些的系统工具等等纯linux系统联网配置(安装USB WIFI模块驱动)debian/ubuntu/麒麟系统联网配置(安装USB WIFI模块驱动)debian/ubuntu/麒麟系统联网配置(网络共享方式)

kbq的博客 3095

C51单片机驱动ILI9341彩屏实战:从Proteus仿真到绘制自定义图案(附完整代码)

本文详细介绍了使用C51单片机驱动ILI9341彩屏的完整实战流程。内容涵盖硬件连接、8080并行接口时序模拟、寄存器初始化、屏幕方向设置以及基本图形绘制原理,并重点讲解了如何在Proteus仿真环境中搭建电路、调试代码,最终实现自定义图案的显示。文章提供了完整的代码示例,为嵌入式开发学习者和复古硬件爱好者提供了一套可行的解决方案。

rnn9storyteller的博客 511

PC通过网口连接RK3588

因为RK3588官方给的镜像没法自动连接上WiFi,每次都要用触摸屏点击连接指定的WiFi,构成局域网后才得到IP,再进行远程登陆,这很麻烦,干脆直接用网线直连好了。多了这个设备,这个就是插入的RK3588的IP,这样RK3588会自动连接上这个网络,PC端的网络会共享给RK3588。在插入网线连接两台设备前,在PC上用命令。通过网线得到的IP,控制RK3588。,也即第一个地址,而非接口地址。随便记录以下,方便自己查看。

weixin_44292294的博客 9825

[特殊字符] RK3588 平台上基于 Panfrost 的 Mesa 驱动编译全过程

摘要: 本文详细记录了在RK3588平台(Ubuntu 20.04 aarch64)上编译基于Panfrost的Mesa驱动的全过程。内容包括:1)系统依赖安装;2)libdrm编译;3)Mesa配置参数优化;4)LLVM 15与SPIRV工具链的安装方法;5)SPIRV-Tools版本问题的解决方案;6)最终编译命令及常见错误处理。关键点在于正确设置工具链路径(PKG_CONFIG_PATH)和版本匹配(LLVM 15对应SPIRV-LLVM-Translator v15.0.0),推荐将组件安装在/op

梁俊星的博客 940

基于 YOLOv26 的电路焊点虚焊检测系统:AI 质检实战

本文介绍了一种基于YOLOv26的电路焊点虚焊检测系统,利用深度学习技术实现自动化质检。系统能识别虚焊、桥接、少锡等8种常见焊点缺陷,具有高精度、实时性和强鲁棒性等特点。文章详细阐述了系统架构,包括数据采集、预处理、YOLOv26检测模型和后处理模块,并提供了代码实现的关键部分,如数据预处理增强和模型训练配置。该系统可显著提高电子制造业的质检效率和准确性。

一键难忘的博客 690

实战指南:如何在3小时内完成Rockchip RK3588 Ubuntu系统部署

还在为Rockchip RK3588开发板的系统配置而烦恼吗?作为目前最受欢迎的ARM架构处理器之一,RK3588的性能表现令人期待,但如何快速部署一套稳定可用的Ubuntu系统却成为了许多开发者的痛点。今天,我将分享一套经过验证的RK3588 Ubuntu系统安装方案,帮助你在最短时间内完成开发板系统配置。 ## 🎯 问题诊断:为什么RK3588系统部署如此困难? 很多开发者在初次接触RK

gitblog_00113的博客 962

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Ubuntu上搭建RK3588开发环境

“RK3588开发环境搭建”、“SDK解压与编译”

qq_41494136的博客 3921

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RK3588 Ubuntu系统深度体验:从入门到精通的完整指南

还在为高性能ARM开发板寻找完美的操作系统而烦恼吗?今天带你深入了解专为Rockchip RK3588设备量身定制的Ubuntu系统,看看它是如何让嵌入式开发变得如此简单高效! ## 为什么选择这个系统? 想象一下,你拿到一块性能强劲的RK3588开发板,却因为系统配置复杂而迟迟无法开始项目。这个Ubuntu系统项目就是为了解决这个痛点而生。 **核心优势解析:** - 开箱即用的完整桌面环

gitblog_00416的博客 1115

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Rockchip RK3588 Ubuntu系统深度体验:从入门到精通

还在为高性能ARM平台的系统部署而困扰吗?想要在Rockchip RK3588上获得原汁原味的Ubuntu桌面体验?今天带你全面解析专为RK3588设备优化的Ubuntu系统,让嵌入式开发变得前所未有的简单高效。 ## 🚀 系统亮点:为什么选择这个方案? **深度优化,性能全面释放** 与传统嵌入式系统不同,这个Rockchip RK3588 Ubuntu系统经过了深度定制,充分发挥了RK3

gitblog_00549的博客 947
上一篇: 使用Forms Authentication实现用户注册、登录
下一篇: jQuery cdn
江南野鹤
博客等级 码龄23年 54粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值