随笔分类 -  Javascript

摘要:使用不可信的数据,通过调用不安全的递归函数来暴露默认原型 原型污染:基础 什么是原型污染? 原型污染是一种针对JavaScript运行时的注入攻击。通过原型污染,攻击者可以控制对象属性的默认值,从而篡改应用程序的逻辑并可能导致服务被拒绝,甚至在某些极端情况下远程执行代码。 现在,你是不是满脑子充满了 阅读全文
posted @ 2023-11-10 19:39 Jaxu 阅读(132) 评论(0) 推荐(0) 编辑
摘要:介绍 在本文中,我试图以最简洁的方式来阐明JavaScript编程原理中对象类型赋值和原生类型赋值之间的区别,以及它们各自是如何工作的。这也是我希望在我的JavaScript编程生涯早期就已经理解的东西。 JS中的原生类型和对象类型 首先,让我们回顾一下JavaScript中不同的原生类型和对象类型 阅读全文
posted @ 2023-09-14 17:25 Jaxu 阅读(227) 评论(0) 推荐(0) 编辑
摘要:对VS Code extension进行单元测试时通常会遇到一个问题,代码中所使用的VS Code编辑器的功能都依赖于vscode库,但是我们在单元测试中并没有添加对vscode库的依赖,所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VS Code extension中 阅读全文
posted @ 2023-08-09 10:31 Jaxu 阅读(118) 评论(0) 推荐(0) 编辑
摘要:什么是单元测试? 所谓单元测试,是对软件中单个功能组件进行测试的一种软件测试方式,其目的是确保代码中的每一个基本单元都能正常运行。因此,开发人员在应用程序开发的整个过程(即代码编写过程)中都需要进行单元测试。在进入到软件开发的下一阶段之前,对程序进行单元测试是一个不错的主意。单元测试非常有用,它使用 阅读全文
posted @ 2023-08-02 15:26 Jaxu 阅读(675) 评论(0) 推荐(0) 编辑
摘要:上一篇我介绍了如何在VSCode Webview中实现点击链接下载图片或文件,本文介绍如何在默认浏览器中打开一个新的页面。 在浏览器中,如果要实现打开一个新的页面有许多种不同的方法,例如: window.open("https://www.cnblogs.com/jaxu", "_blank"); 阅读全文
posted @ 2023-05-09 19:13 Jaxu 阅读(442) 评论(0) 推荐(0) 编辑
摘要:参考sapui5 TreeTable控件的示例,我们发现所有的可展开列(即所谓的hierarchical data column)默认都在第一列,而且API中并没有给出对应的属性或方法来重新指定可展开列在table中的位置。 我们可以编写一个自定义控件,使其继承sapui5的TreeTable控件, 阅读全文
posted @ 2023-01-13 14:55 Jaxu 阅读(162) 评论(0) 推荐(0) 编辑
摘要:前段时间在用Promise.all执行一个非常大批量的操作时遇到一个奇怪的问题。 这个Promise.all需要遍历一个指定目录中的所有文件,并以异步的方式读取文件内容并进行后续操作。由于目录中的文件数目比较多(大约8000+),Promise.all在执行的过程中有许多文件读取失败,但是如果指定一 阅读全文
posted @ 2022-07-26 18:02 Jaxu 阅读(831) 评论(0) 推荐(0) 编辑
摘要:JavaScript使用符号三个点(...)作为剩余运算符和展开运算符,不过这两个运算符是有区别的。 最主要的区别就是,剩余运算符将用户提供的某些特定值的其余部分放入JavaScript数组中,而展开运算符则将可迭代的对象展开为单个元素。 例如下面这段代码,其中使用了剩余运算符将部分值存放到数组中: 阅读全文
posted @ 2021-12-27 22:04 Jaxu 阅读(870) 评论(0) 推荐(3) 编辑
摘要:我们曾经试图遵循良好的编程习惯,在创建和定义方法时尽可能按照“职责单一”和“开放-封闭”原则将那些没有必要暴露出来的方法定义为私有方法,但是在编写测试用例时又往往对这些设计原则嗤之以鼻,因为你会为无法编写测试这些私有方法的测试用例而感到苦恼。 从互联网上找到的许多方法都不是最优解决方案。在本文中,我 阅读全文
posted @ 2021-12-07 11:32 Jaxu 阅读(435) 评论(0) 推荐(0) 编辑
摘要:在JavaScript中,我们通常可以像下面的代码这样来简单地定义一个类: var sample = function() { // constructor code here } sample.prototype.func1 = function() { // func1 code here } 阅读全文
posted @ 2021-10-08 20:49 Jaxu 阅读(437) 评论(0) 推荐(0) 编辑
摘要:今天发现一个可以通过CSS使DIV的垂直滚动条保持在底部的方法,记录一下! .container { height: 100px; overflow: auto; display: flex; flex-direction: column-reverse; } 在线查看例子:https://code 阅读全文
posted @ 2021-08-31 22:33 Jaxu 阅读(583) 评论(0) 推荐(0) 编辑
摘要:看到标题你可能会想,如此简单的问题值得去探究吗?如果我有一个json object,只需下面简单的几行代码就可以完成: var obj = { "_id": "5078c3a803ff4197dc81fbfb", "email": "user1@gmail.com", "image": "some_ 阅读全文
posted @ 2021-06-01 12:42 Jaxu 阅读(4649) 评论(0) 推荐(1) 编辑
摘要:众所周知,jQuery提供了css方法,用来给指定的元素设置css样式,或者返回一个或多个样式属性,具体的介绍可以参考W3school上的说明。 不过,通过这种方式给元素设置样式时,!important标记会被忽略掉。例如下面的代码: $("p").css("min-height", "calc(1 阅读全文
posted @ 2020-08-27 14:54 Jaxu 阅读(1430) 评论(0) 推荐(1) 编辑
摘要:上一篇:Theia APIs——事件 通过JSON-PRC进行通信 在本节中,我将讲解如何创建后端服务并通过JSON-PRC来连接它。 我将使用debug logging system作为例子来进行讲解。 概述 本示例将用express框架创建一个服务,然后通过websocket连接该服务。 注册服 阅读全文
posted @ 2020-01-11 15:32 Jaxu 阅读(1768) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia APIs——Preferences 事件 Theia中的事件或许会让你感到困惑,希望本节能阐述清楚。 来看下面的代码: (来自logger-watcher.ts) @injectable() export class LoggerWatcher { getLoggerClient 阅读全文
posted @ 2020-01-10 16:36 Jaxu 阅读(1005) 评论(0) 推荐(0) 编辑
摘要:上一篇:Theia APIs——命令和快捷键 Preferences Theia有一个preference service,模块可以通过它来获取preference的值,提供默认的preferences以及监听preference的更改。 Preferences的内容可以保存在workspace根目 阅读全文
posted @ 2020-01-09 17:06 Jaxu 阅读(1092) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建语言支持 命令和快捷键 Theia可以通过多种不同的方式进行扩展。命令允许packages提供可以被其它包调用的唯一命令,还可以向这些命令添加快捷键和上下文,使得它们只能在某些特定的条件下被调用(如窗口获取焦点、当前选项等)。 在Theia中添加命令 要将命令添加到Th 阅读全文
posted @ 2020-01-08 13:23 Jaxu 阅读(1222) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建插件 Theia——添加语言支持 Theia中TextMate的支持 使用TextMate语法可以为大部分源文件提供精准的着色修饰,虽然这只是在语法级别上(没有语言本身的深度解析)。语义着色可以由语言服务器提供。 TextMate语法主要有两种格式:.plist和.tm 阅读全文
posted @ 2020-01-07 09:10 Jaxu 阅读(1921) 评论(0) 推荐(0) 编辑
摘要:上一篇:使用Theia——创建扩展包 创建Theia插件 下面我们来看看如何创建Theia插件。作为示例,我们将注册一个Hello World命令,该命令显示一个“Hello World”通知。本文将指导你完成所有必要的步骤。 Theia的架构 插件与扩展包 Theia是一个可扩展的IDE。你可能听 阅读全文
posted @ 2020-01-06 22:38 Jaxu 阅读(3006) 评论(0) 推荐(1) 编辑
摘要:上一篇:使用Theia——构建你自己的IDE 创建Theia扩展包 本例中,我们将添加一个菜单项“Say hello”用来显示一个通知“Hello world!”。本文将指导你完成所有必要的步骤。 Theia的架构 Theia应用程序由所谓的扩展包(extensions)构成。一个扩展包提供一组特定 阅读全文
posted @ 2020-01-04 23:19 Jaxu 阅读(2302) 评论(0) 推荐(0) 编辑