部分Dojo常用函数简介(二)——面向对象(OO)及包机制(package system)

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取 本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确 阅读详情

每个Ajax 框架都对Javascript 做了扩展,提供了很多常用函数,增强了 Javascript 的开发效率。在这里将对部分Dojo 中的常用函数做简单的介绍。由于Dojo的常用函数较多,也为方便大家阅读,将这些常用函数分为了五个类别分别进行介绍。本文将介绍第二部分的内容:面向对象(OO)及包机制(package system)常用函数。

* 本系列博文的绝大多数内容来自于对dojocampus.org上的dojo reference guide文档的翻译,在此也特别感谢文档的翻译者们:Fei Jia, Zhu Xiao Wen, Li Wen Bing, Zhang Jun, Hu Kuang, Huang Wei, Wu Min Qi, Mo Ying, Cheng Fu, Zhong Si Qi

dojo.require

如果你想使用Dojo作为你的开发工具包,那么dojo.require是你必须要熟练掌握的。Dojo采用了与Java语言类似的命名空间(namespace)、包(package)机制,Dojo的代码都被切分为各个模块存储在各个的包中,如果你需要用到Dojo中的某个模块,那么就需要首先调用dojo.require("modulename")来预先加载该模块,否则的话,script将会抛错提示"dojo.some not defined"。


dojo.require接收一个字符串参数,该参数为要进行加载的模块名。下面是一个简单的示例:

 

 

另外,由于各个模块之间有相互依赖性存在,用户想逐个判断并加载所有需要的模块是件很困难的事情,因此,dojo.require也提供了一些很不错的特性:

  • 自动载入所有依赖的模块:

例如, dijit.form.NumberTextBox 需要引用 dojo.number ,那么当你使用dijit.form.NumberTextBox时,则不需要再次声明引用dojo.number模块。

  • 预防多次载入:

当某个模块已经载入,再次声明引用相同模块,dojo.require会直接返回,而不会再次加载相同的模块。

  • 通过自定义打包机制快速载入所需模块:

用户可以通过dojo提供的打包机制构建定制化的dojo包,以快速载入模块。你可以通过定制化将会多次使用的模块预加载到dojo中,而由于dojo.require()的预防多次加载机制,你也不需要对代码进行修改。

那么你可能会问,那我是不是需要通过require机制来先载入dojo.require呢?答案当然是不。顶层dojo包中的所有函数都是自动加载的(如dojo.query(),dojo.byId(),等等)。这些都是dojo的核心方法,都会在dojo引用中被频繁使用。就如同Java中的java.lang包,无需显式声明加载。

 

dojo.provide

与dojo.require相对应,dojo.provide是用于提供dojo模块名的函数。每一个Dojo类都必须在源代码文件开始处提供至少一个dojo.provide(),并和文件名相匹配. 例如在"Js/dojo/foo.js"文件中,在调用任何"dojo.require()"前 必须先添加 "dojo.provide('dojo.foo');" 。

 

下面的代码示例假设对应 my/module.js 源文件,请注意dojo.provide的调用始终在dojo.require之前。

 

 

注意,同一个文件中可以有多个dojo.provide,但在build脚本中一般只使用一个dojo.privide()以正确匹配文件名。

 

dojo.declare

JavaScript和Java不一样,它没有一个类系统,但是Dojo提供了一套模拟Java的类系统的机制:dojo.declare。
dojo.declare 接受如下的三个参数:

 

className: 字符串,可以为null,声明的类的名称,这个类名会被用作创建的构造子的全局名称,如果不指明名称,该类将被认为是匿名的(从V1.4开始),如果指明了名称,那么名字会被存储在创建的原型的属性”declaredClass” 中。

 

superclass:一个对象或对象数组,也可以为null(没有基类),声明了该类的基类,当为该参数为数组时,说明该类有多个基类。

 

props:一个对象,此对象所有的属性将混入到被创建的原型中。

 

另外,通过将一个属性命名为”constructor”,你可以为创建的对象实例增加一个初始化函数。

 

例子:

 

 

这里我们声明了一个不继承任何类的简单的类,名为 my.Thinger 。该类最终含有一个名为 constructor 的构造函数。
你可以这样创建一个 my.Thinger 实例:

 

 

dojo.mixin

dojo.mixin用于将对象混合在一起。所谓mixin(混入)是将两个对象从右到左组合起来,覆盖最左边的对象,并且返回混入后的对象给用户。Dojo的这个mixin非常类似于 dojo.extend ,但它只能用于对象,而不像extend显式地扩展一个对象的原型(object.prototype)。


mixin函数修改的是列表中第一个对象,将第二个对象(及以后所有对象)混入到第一个对象中。

 

 

如果您希望创建一个全新的混合对象,有如下几种做法:第一种,用dojo.clone克隆现有对象,然后再混入:

 

另一种做法是,可以用一个空对象作为第一个参数,然后将其他对象混入到这个空对象里面。您可以不断重复这个过程:

 

 

只要记住作为第一个参数的对象实例总是会被改写,并且越右面的对象,其优先级越高。

 

dojo.extend

dojo extend 的工作原理十分类似 dojo.mixin, 区别在于它会直接作用于一个对象的原型(prototype)之上。和mixin一样,dojo.extend将其参数最右侧的对象的成员直接合并进入第一个参数的对象。


我们可以利用extend方法来扩展一个现有类的功能:

 

 

dojo.exists

dojo.exists用于检查一个字符串中利用点号’.’分隔的所有对象是否存在, 例如 A.B.C 。dojo.exists 是一个很方便的方法,特别是在需要检测一个较长的对象路径时。它接受一个字符串作为它的第一个参数,该方法将试图沿着此字符串所表示的路径去检测此路径上所含的对象是否存在。第二个参数是可选的,可以设定一个对象作为前面所设的字符串所表示的路径的根。如果忽略第二个参数,则它将会默认使用全局对象作为根来进行检索。字符串中每个被’.’分隔的部分都会被检测是否定义过,只有当该路径上所有对象都存在时此方法才会返回true。


dojo.exists 的第一个参数是一个字符串表示要检测的对象路径,第二个参数是可选参数,是作为搜索该对象路径的根对象。返回值为一个boolean值。

 

 

dojo.clone

用于克隆对象或DOM节点,该函数返回一个克隆后的新对象。

 

 

以上就是部分Dojo的面向对象(OO)及包机制(package system)常用函数,在下一部分中,会介绍关于页面生命周期及DOM相关的一些常用函数。

 

Advanced Installer打包避坑指南:如何正确配置64位系统下的Java环境与注册表条件(以15.7版本为例) 本文详细解析了使用Advanced Installer 15.7版本在64位系统下打包Java应用时的常见问题与解决方案。重点介绍了注册表重定向机制、Java环境检测的双保险策略、环境变量设置的隐藏坑以及权限管理的进阶技巧,帮助开发者避免安装包在用户机器上无法运行的幽灵问题。 阅读详情

相关推荐

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 397

Dojo的几个简单函数介绍

1.dojo.require:dojo包的核心函数,用来加载dojo的功能包. dojo.require("esri.map");//加载esri/map.js 2.dojo.addOnLoad,页面加载完后调用的函数 dojo.addOnLoad( function() { var MyMap = new esri.Map("MyMapDiv"); var MyTiledMapSe

954

自动驾驶轨迹规划算法——Apollo Lattice Planner

Apollo Lattice Planner是百度Apollo自动驾驶系统中的一种基于采样的实时轨迹规划算法。其核心思想是在离散化的状态空间中,对终端状态进行采样,并通过多项式曲线连接当前状态与候选终端状态,形成候选轨迹集,最后基于代价函数选择最优轨迹。该算法将车辆可达状态按纵向距离、横向偏移和速度等维度规则离散化,形成"格点"状态空间。 Lattice Planner通过三个主要步骤实现轨迹规划:1)终端状态采样,在规划时域内枚举多种驾驶意图;2)轨迹生成,使用五次多项式连接起点与各终

swaggytiger的博客 1624

DOJO 之深入分析require

本文翻译自dojo文档 深度分析require require接收以下参数     configuration (optional, default=undefined): an object with loader configuration options - this allows you to reconfigure the loader at run-time.     co

yatsov的博客 1927

GWAS与eQTL相结合,进一步筛选疾病相关基因

欢迎关注”生信修炼手册”!在GWAS分析结果中,大部分显著的SNP位点都位于非编码区,很难直接挖掘这些位点的调控机制。通常假设与疾病关联的SNP位点通过调控基因表达来发挥作用,而eQTL...

庐州月光的博客 1万+

FreeRTOS面试题汇总

如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决。12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。简历上写了了解RTOS,问了rtos的问题,用过哪些函数。讲解FreeRtos原理,调度机制,底层原理,代码调用。FreeRTOS,你的三个任务控制,请问你是怎么实现的。freertos中EventBits_t是干啥的?freertos使任务切换的方式有哪些?

weixin_45636780的博客 1万+

dojo.declare/dojo.provide/dojo.require:JavaScript模块化管理工具

在中大型软件的开发过程中,代码的模块化管理非常重要。众所周知支持良好的模块化管理的语言是Java,通过package/import机制来实现。相比较而言,JavaScript作为运行在前端的解释性语言,其模块化管理一直都没有受到足够的重视。对于以静态页面为主的网站,javascript一般就是做做网页特效,大多数情况下都是直接写入到HTML页面中,也谈不上模块化不模块化。但是随着富客户端的蓬勃发展,

迟到的程序猿 881

R语言实战:三因素方差分析(ANOVA)从入门到精通(附完整代码解析)

本文详细介绍了如何使用R语言进行三因素方差分析(ANOVA),从数据准备、模型构建到结果解读与可视化,提供完整代码解析。通过实战案例,帮助读者掌握复杂交互效应的分析方法,适用于科研、教育等多个领域的数据分析需求。

weixin_29081101的博客 244

20190320 Dojo常用方法总结

0. 使用环境 Dojo版本:1.14.2 此次总结以dojo的base为主,即不需要手动引入组件 1. 常用不归类方法 1.1. dojo.addOnLoad 在页面加载完成并且dojo.require语句的请求也返回了结果之后执行 dojo.addOnLoad(function () { /* Any content that depends upon dojo.require s...

weixin_30457065的博客 296

Synopsys的CoreConsultant使用简析

CoreConsultant使用简析

weixin_58165606的博客 1万+

SAP 联产品测试

最近领导一直要求研究一下SAP联产品的使用场景,之前只是自己摸索过一次,这个重新对联产品进行一个测试。 1、首先准备好物料主数据 注意主数据中需要勾选联产品标识。 设置好物料的分摊的百分比。 2、检查BOM 在BOM中也需要维护联产品的标识 只有当组件数量未负数时,才能勾选联产品的标识。如果组件数量正值,勾选联产品的标识时会报错。 3、我们创建生产订单 可以看到按正常的生产订单下达时,系统就报错了,问题点在于离散制造的生产订单基本是结算到物料的。但是联产品是按订单结算的, 所以需要对订单类型中的结算参

我小时候很黑的博客 2110

dojo.mixin

    dojo.mixin用于把几个对象实例的属性混合在一起。 var book = { size:10, color:"green" }; function children(name){ this.name = name; }; var ch = new children("test"); var obj = new Object(); dojo.mixin...

默默的小熊 394

ABAP 里解构引用操作符 ->* 的使用方法详解

解除引用操作符->*可用于将“类型为REF TO …的引用变量”的值(即该引用所指向内存)取出,从而访问其实际值或内部组件。具体地,若dref是一个“引用变量”,则表达式dref->*代表对该引用进行“解除引用”,使得程序按静态类型将其视为实际类型的值对象。例如,若lr类型声明为,则lr->*表示“将 lr 引用的INT4对象看作INT4类型并访问其值”。注:若 “数据引用变量” 的静态类型是通用类型DATA,则只能在这种上下文中使用->*。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 480

部分Dojo常用函数简介——面向对象(OO)及包机制(package system)

原文url:http://blog.csdn.net/dojotoolkit/article/details/5975936 每个Ajax 框架都对JavaScript 做了扩展,提供了很多常用函数,增强了 Javascript 的开发效率。在这里将对部分Dojo 中的常用函数做简单的介绍。由于Dojo的常用函数较多,也为方便大家阅读,将这些常用函数分为了五个类别分别进行介绍。本文将介绍第二

Mr_gly的博客 603

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ROS常用命令 & roscpp常用函数

ROS常用命令 & roscpp常用函数

weixin_44415639的博客 3476

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【SystemVerilog】Package包 用途

Package的应用通常在代码文件较多或者复用别人的代码的时候会用到,这就导致了这块东西容易被忽略。本文内容分两部分,第一部分通过类比来介绍package包的两大作用,第二部分将提供package的代码例程作为编程指导。 package两大作用 Package这个概念在很多编程语言中都有对应的语法结构,比如Python、Java、Perl等等,足以说明它有多么重要!Package有两大作用,一方面是为了代码分发,package提供了代码封装效果,提高了代码的重用性(reuseability);另一方面是为了

oldmoney 744

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android A/B system - update_engine

文章目录update_engine overviewtrigger update_engine to start updateActionInstallActionDownloadPlanActionZERO/DISCARDREPLACE/REPLACE_BZ/REPLACE_XZSOURCE_COPYSOURCE_BSDIFF/BROTLI_BSDIFFFilesystemVerifierAct...

Dufre 4255

Android Bootloader - Main system - Recovery

一、MTD分区: BOOT:        boot.img,Linux kernel (within normal ramdisk) MISC:        bootloader message struct RECOVERY:    recovery.img,Linux kernel (within recovery ramdisk) SYSTEM:      system.img

漫步云端 4510

PackageManagerService学习笔记四-构造方法(扫描Package)

构造方法代码片段: { /*-------------省略部分代码------------*/ /*优化扫描,check是否有需要字节码优化*/ // Set flag to monitor and not change apk file paths when // scanning install directories. /* 定义扫

张超的博客 1005

Bootloader启动Main system 和 Recovery

一、MTD分区: BOOT:        boot.img,Linux kernel (within normal ramdisk) MISC:        bootloader message struct RECOVERY:    recovery.img,Linux kernel (within recovery ramdisk) SYSTEM:      system.img

漫步云端 3696

Android A/B system - bootctrl

Android A/B system系列 Android A/B System概述 Android A/B System -Generate OTA Package Achitecture 在Android A/B System概述中有讲到A升B的一个例子。下面这张图是想说明两个问题: 启动的时候是如何知道要从A启动还是B启动? 升级的时候是如何要更新A还是B? 图中有两个流程,和涉及的一些模...

Dufre 4622

Android build系统中常用LOCAL_变量

新书上市《深入解析Android 5.0系统》 以下内容节选自本书 编写模块的编译文件,实际就是定义一系列以“LOCAL_”开头的编译变量,因此我们有必要弄明白这些变量的具体含义。下面是一些经常使用的LOCAL_编译变量的说明: 变量名 说明 LOCAL_ASSET_FILES 编译APK文件时用于指定资源列表,...

跨链技术践行者 1万+

buildroot Root File System

buildroot底下的root filesystem建制流程

陨石䧛的天际 500

ROS中点云学习(二):使用PCL接收点云,操作之后重新发送

转载:祢豆子大佬 这次我们接收点云,并对它进行操作,然后发布一个新的点云。 主要思想:自己写一个发布器和接收器,接收器的回调函数是最重要的部分。在回调函数中我们把接收到的点云颜色进行修改,然后重新发布一个主题。具体注释详见代码。 主程序为pcl_sub.cpp,这次写的规范了很多,使用了类。具体代码如下: #include <ros/ros.h> #include <pcl/point_types.h> #include <pcl_conversions/pcl_convers

weixin_41170972的博客 637

程序分析 clang系列学习 (二)

clang静态检测clang APIAST匹配部分UseAfterMoveCheck问题概述示例代码ASTCFG检测步骤算法大致流程代码 这里,我主要通过clang API实现自定义的代码检测工具,采用的方式类似于clang-tidy主要是采用AST,个别的会用上CFG。 我实现的方式是libtooling方式,llvm-project下有lintooling示例代码clang-check,不过CMakeLists.txt中 add_clang_tool 和 clang_target_link_librar

qq_44370676的博客 2268
上一篇: 部分Dojo常用函数简介(一)——Javascript基础扩展函数
下一篇: 部分Dojo常用函数简介(三)——页面生命周期及DOM相关常用函数
dojotoolkit
博客等级 码龄16年 1205粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值